{ "@@locale": "en", "appTitle": "Šepot", "settingsLanguage": "App language", "languageSystem": "System default", "commonUnknownContact": "Unknown", "verifyVerified": "Verified", "verifyUnverified": "Not verified", "chatMenuVerifyContact": "Verify contact", "chatDisappearingMessages": "Disappearing messages", "chatMenuUnblockContact": "Unblock contact", "chatMenuBlockContact": "Block contact", "reportAndBlock": "Report and block", "errorGeneric": "Error: {error}", "groupsYouLeftGroup": "You're no longer in this group", "groupsMemberCount": "{count, plural, one{1 member} other{{count} members}}", "groupsMembers": "Members", "groupsRename": "Rename group", "groupsLeave": "Leave group", "groupsLeftBanner": "You're no longer in this group. Your history stays, but new messages won't arrive.", "groupsMembersWithCount": "Members ({count})", "groupsYou": "You", "groupsFounder": "Founder", "groupsNameHint": "Group name", "commonCancel": "Cancel", "commonSave": "Save", "groupsRenameFailed": "Rename failed: {error}", "groupsLeaveConfirmTitle": "Leave group?", "groupsLeaveConfirmBody": "Others will see that you've left. Your history stays, but you won't receive new messages and someone will have to invite you back.", "groupsLeaveAction": "Leave", "groupsLeaveFailed": "Leaving failed: {error}", "chatBlockedBanner": "This contact is blocked. You won't receive their messages and can't message them.", "chatUnblock": "Unblock", "chatContactBlocked": "{name} is blocked", "chatContactUnblocked": "{name} is unblocked", "reportAndBlockBody": "We'll block {name} and you'll stop receiving their messages. Then we'll show you a form to tell us what happened — we can't see message content, so without your description we won't know about it.", "chatEmptyEncrypted": "Messages are end-to-end encrypted.", "chatEmptyNoOneElse": "No one else can read them.", "commonToday": "Today", "commonYesterday": "Yesterday", "chatMessageHint": "Type a message…", "chatDiscardRecording": "Discard", "chatRecording": "Recording…", "chatMicPermissionMissing": "Microphone permission missing", "chatRecordingFailed": "Recording failed: {error}", "chatVoiceSendFailed": "Sending voice message failed: {error}", "chatDeletedMessagePreview": "Deleted message", "chatVoiceMessagePreview": "🎤 Voice message", "chatPhotoPreview": "📷 Photo", "chatAttachmentPreview": "📎 Attachment", "chatEditingMessage": "Editing message", "chatReply": "Reply", "chatActionReply": "Reply", "commonCopy": "Copy", "commonEdit": "Edit", "chatDeleteForMe": "Delete for me", "chatDeleteForEveryone": "Delete for everyone", "commonOff": "Off", "chatDisappearing30s": "30 seconds", "chatDisappearing5m": "5 minutes", "chatDisappearing1h": "1 hour", "chatDisappearing1d": "1 day", "chatDisappearing1w": "1 week", "chatDisappearingDescription": "New messages will be deleted for both you and the other person once the time is up.", "chatDisappearingDisabled": "Disappearing messages turned off", "chatDisappearingEnabled": "New messages will disappear after: {duration}", "attachmentGallery": "Photo from gallery", "attachmentTakePhoto": "Take photo", "attachmentDocument": "Document", "attachmentTooLarge": "File is too large (max {maxMb} MB)", "attachmentPickFailed": "Picking attachment failed: {error}", "attachmentSendFailed": "Sending attachment failed: {error}", "chatSendFailed": "Sending failed: {error}", "chatMessageDeleted": "Message deleted", "chatEdited": "edited", "errorTrustRootChanged": "The relay's trust root has changed! Refusing to communicate.", "errorRelayUnavailable": "Relay unavailable (sender certificate)", "errorNotYetRegistered": "Šepot is still connecting to the relay — try sending again in a moment.", "errorContactLinkIncomplete": "This link is incomplete — the other person created it before connecting. Ask them for a new sepot:// link.", "errorAttachmentTooLarge": "Attachment is too large (max {maxMb} MB)", "errorGroupNeedsMember": "A group needs at least 1 member", "errorGroupMaxMembers": "A group can have at most {maxMembers} members", "errorMemberNoDeliveryAddress": "{displayName} has no delivery address — ask them for a new link", "errorContactNoDeliveryAddress": "This contact has no delivery address — ask them for a new sepot:// link", "errorIdentityKeyMismatch": "The identity key from the relay does NOT match this contact — possible MITM! Message not sent.", "settingsTitle": "Settings", "settingsSectionGeneral": "General", "settingsSectionSecurity": "Security", "settingsChangePinTitle": "Change PIN", "settingsChangePinSubtitle": "6-digit PIN for unlocking", "settingsAutoLockTitle": "Auto-lock", "settingsAutoLock5min": "After 5 minutes", "settingsDecoyPinTitle": "Duress PIN", "settingsDecoyPinSetSubtitle": "Set — opens an empty app", "settingsDecoyPinUnsetSubtitle": "A second PIN that opens an empty app", "settingsSectionNotifications": "Notifications", "settingsSectionConnection": "Connection", "settingsSectionPrivacy": "Privacy", "settingsReadReceiptsTitle": "Read receipts", "settingsReadReceiptsSubtitle": "Let others see when you've read their messages (off by default)", "settingsScreenSecurityTitle": "Screen security", "settingsScreenSecuritySubtitle": "Block screenshots and hide content in the app switcher", "settingsSectionBackup": "Key backup", "settingsSeedPhraseTitle": "Recovery phrase", "settingsSeedPhraseSubtitle": "24 words to restore your identity", "settingsBackupExportTitle": "Back up history", "settingsBackupExportSubtitle": "Encrypted file with your contacts and messages", "settingsBackupImportTitle": "Restore from backup", "settingsBackupImportSubtitle": "Load a backup (only with your identity)", "settingsSectionSafety": "Safety", "settingsReportAbuseTitle": "Report abuse", "settingsReportAbuseSubtitle": "Harassment, fraud, child endangerment", "settingsChildSafetyTitle": "Child safety standards", "settingsChildSafetySubtitle": "How we respond to child abuse", "settingsSectionAbout": "About", "commonAppName": "Šepot", "settingsVersion": "Version {version}", "settingsLicenseTitle": "License", "settingsLicenseSubtitle": "AGPL-3.0", "settingsPrivacyPolicyTitle": "Privacy policy", "settingsPrivacyPolicySubtitle": "What we know about you (and what we don't)", "settingsTermsTitle": "Terms of use", "settingsTermsSubtitle": "sepot.cz/podminky", "settingsDataDeletionTitle": "Data deletion", "settingsDataDeletionSubtitle": "How to request erasure", "settingsDeleteAllDataButton": "Delete all data", "settingsLicenseBody": "Šepot is distributed under the GNU Affero General Public License version 3 (AGPL-3.0). It uses the libsignal library, also AGPL-3.0.\n\nTo get the source code corresponding to this version, write to {supportEmail} and we'll send it to you.", "commonClose": "Close", "settingsIdCopied": "ID copied", "settingsFingerprint": "Fingerprint: {fingerprint}", "backupShareSubject": "Šepot — encrypted backup", "backupExportFailed": "Backup failed: {error}", "backupRestoredCount": "{count, plural, one{Restored 1 conversation from the backup} other{Restored {count} conversations from the backup}}", "backupImportFailed": "Restoring from backup failed: {error}", "settingsDecoyPinExplain": "Entering this PIN opens the app empty — without your contacts and messages. It must be different from your regular PIN.", "commonConfirm": "Confirm", "commonSet": "Set", "settingsDecoyPinEnabled": "Duress PIN set", "settingsDecoyPinConflict": "The duress PIN must differ from your regular PIN", "settingsDecoyPinDisabled": "Duress PIN removed", "settingsSeedPhraseNotFound": "Recovery phrase not found", "settingsSeedPhraseWarning": "These words are the only backup of your identity. Don't show them to anyone!", "settingsSeedWordChip": "{index}. {word}", "settingsAboutTagline": "Šepot — Private Messenger", "settingsAboutBody": "An open-source end-to-end encrypted messenger.\n\nCryptography:\n• X25519 (key exchange)\n• XChaCha20-Poly1305 (encryption)\n• Ed25519 (signatures)\n\n© 2026 ajtak.it", "settingsDeleteAccountTitle": "Delete account and all data?", "settingsDeleteAccountBody": "This action cannot be undone. All messages, contacts and keys will be deleted from this device and the account will be deregistered from the server. If you don't have your recovery phrase, you'll lose your identity.", "settingsDeleteAccountServerOffline": "The server is unreachable right now — data on this device has been deleted, but the server registration remains. Write to podpora@sepot.cz and we'll delete the rest.", "settingsDeleteAllConfirm": "Delete everything", "groupsCreateFailed": "Couldn't create the group: {error}", "groupsNewGroupTitle": "New group", "groupsCreateAction": "Create", "groupsMembersCounter": "Members ({selectedCount}/{maxMembers})", "groupsEmptyContactsHint": "Add some contacts first — a group is made of people you can already message.", "groupsMemberMissingAddress": "Missing delivery address — ask them for a new link", "attachmentSizeBytes": "{bytes} B", "attachmentSizeKb": "{kilobytes} KB", "attachmentSizeMb": "{megabytes} MB", "attachmentDownloadFailedTapToRetry": "Download failed — tap to retry", "attachmentDownloadFailed": "Download failed", "attachmentDownloading": "Downloading…", "attachmentSharedFileFallbackName": "file", "attachmentOpenFailed": "Opening attachment failed: {error}", "commonFile": "File", "chatListNewConversation": "New conversation", "chatListPhotoWithCaptionPreview": "📷 {caption}", "chatListFilePreview": "📎 {fileName}", "chatListReadReceiptPreview": "Read", "chatListTimeNow": "now", "chatListTimeMinutes": "{minutes} min", "qrScanTitle": "Scan QR code", "qrScanInstruction": "Point the camera at your contact's QR code", "qrScanHint": "The QR code contains the contact's public key", "qrNewContactTitle": "New contact", "qrContactAdded": "{name} added", "commonAdd": "Add", "onboardingWelcomeTitle": "Welcome to Šepot", "onboardingWelcomeSubtitle": "A private messenger with end-to-end encryption.\nNo phone number. No email.\nJust your keys.", "onboardingStart": "Get started", "onboardingRestoreExisting": "I already have an account — restore from recovery phrase", "onboardingEncryptionTitle": "Your messages, your keys", "onboardingFeatureSignalTitle": "Signal protocol", "onboardingFeatureSignalSubtitle": "X3DH + Double Ratchet, forward secrecy", "onboardingFeaturePqTitle": "Post-quantum protection", "onboardingFeaturePqSubtitle": "Kyber (PQXDH) from the first message", "onboardingFeatureLocalKeysTitle": "Keys stay on your device", "onboardingFeatureLocalKeysSubtitle": "No server ever sees them", "onboardingFeatureDisappearingSubtitle": "Deleted automatically", "commonContinue": "Continue", "onboardingIdentityTitle": "Create your identity", "onboardingIdentitySubtitle": "No email or phone. Just a name and cryptographic keys.", "onboardingDisplayNameLabel": "Display name", "onboardingDisplayNameHint": "e.g. John", "onboardingSeedPhraseWarning": "Write down these {count} words. They're the only backup of your keys!", "onboardingSeedSavedConfirm": "I confirm I've stored the phrase safely", "onboardingGenerateKeys": "Generate keys", "verifyMismatchTitle": "Numbers DO NOT match", "verifyMatchBody": "The keys match. {contactName} is a verified contact.", "verifyMismatchBody": "The safety numbers don't match. Someone may be intercepting your connection (MITM), or you're scanning a different contact's code. Do NOT send sensitive messages and verify each other again over a different channel.", "commonUnderstood": "Got it", "verifyManualConfirmTitle": "Mark as verified?", "verifyManualConfirmBody": "Confirm only if you've compared the digits with the other person over another trusted channel (in person, on a call…) and they match.", "verifyManualConfirmAction": "They match — verify", "verifyTitle": "Verify contact", "verifyContactVerifiedBanner": "This contact is verified", "verifyIntro": "Compare this number with {contactName}. If it matches, no one is eavesdropping on your encryption. The fastest way is to scan each other's QR codes.", "verifyScanButton": "Scan their code", "verifyManualButton": "Digits match — mark manually", "verifyUnverifyButton": "Clear verification", "verifyScanScreenTitle": "Scan verification QR", "reportTitle": "Report", "reportSubmitted": "Report submitted", "reportSubmittedChildSafety": "We handle these reports with priority. If a child is in immediate danger, call your local police or a child helpline.", "reportSubmittedThanks": "Thanks. We'll look into it as soon as possible.", "commonDone": "Done", "reportPanelE2eNotice": "Messages are end-to-end encrypted, so we can't see their content even now. Please describe in your own words what happened. Don't paste message content or links to it here — we're not allowed to store it and we don't need it to assess the report.", "reportPanelCsamWarning": "Do NOT send us material depicting child abuse. Possessing it is a crime — for us too — and we don't need it for a report. It should go directly to the police or a dedicated child sexual abuse reporting hotline. Just tell us what happened — we'll block the account and pass the matter on.", "reportPanelIpNotice": "Reports aren't sent through the relay — they go to our web server, which will see your IP address when you submit.", "reportCategoryHeading": "What the report is about", "reportDescriptionHeading": "What happened", "reportAttachContactId": "Attach the reported contact's ID", "reportAttachContactIdNamed": "Attach {contactName}'s ID", "reportReplyToHeading": "How to reach you (optional)", "reportReplyToHint": "email, in case we need to follow up", "reportSubmitButton": "Submit report", "contactsTitle": "Contacts", "contactsAddContact": "Add contact", "contactsSearchHint": "Search contacts…", "contactsEmpty": "No contacts yet", "contactsNoResults": "No results", "contactsShareCardTitle": "Share your Šepot ID", "contactsShareCardSubtitle": "Show your QR code or send a link", "contactsAddDialogPrompt": "Paste the contact's share string:", "contactsShareStringHint": "Paste share string…", "contactsInvalidShareString": "Invalid share string", "contactsAdded": "Contact {name} added", "verifyContactSubtitle": "Compare safety numbers", "contactsDeleteContact": "Delete contact", "pinConfirmTitle": "Confirm PIN", "pinSetupTitle": "Set up a PIN", "pinConfirmSubtitle": "Enter the PIN again to confirm", "pinSetupSubtitle": "6-digit PIN to unlock the app", "pinSetupFailed": "Setting the PIN failed. Try again.", "pinMismatchRetry": "PINs don't match. Try again.", "pinChangeCurrentTitle": "Enter your current PIN", "pinChangeCurrentSubtitle": "We'll verify it by unlocking your key", "pinChangeNewTitle": "Enter a new PIN", "pinChangeNewSubtitle": "6 digits", "pinChangeConfirmTitle": "Confirm the new PIN", "pinChangeConfirmSubtitle": "Enter it one more time", "pinWrong": "Wrong PIN.", "pinChangeMustDiffer": "The new PIN must differ from the current one.", "pinMismatch": "PINs don't match.", "pinDecoyConflict": "This PIN already belongs to duress mode. Choose a different one.", "pinChangeFailed": "Changing the PIN failed. Try again.", "pinChanged": "PIN changed", "errorCryptoInitTitle": "The encryption core failed to start", "errorStartupTitle": "Šepot failed to start", "errorScreenNotRenderedTitle": "This screen failed to render", "errorStartupBody": "Something went wrong right at startup. Please send me this text (long-press and copy) — it will help me find the bug.", "errorContactFooter": "sepot.cz · get in touch", "pinUnlockTitle": "Unlock Šepot", "pinEnterPin": "Enter PIN", "pinUnlockWithBiometrics": "Unlock with biometrics", "pinWrong2": "Wrong PIN", "pinUnlockError": "Unlock error", "pushTitle": "Push notifications", "pushModeOffDesc": "Messages arrive only after you open the app.", "pushModeUp": "UnifiedPush (recommended)", "pushModeUpDesc": "De-Googled — needs the ntfy app (F-Droid/Play).", "pushModeFcm": "Google (FCM)", "pushModeFcmDesc": "Reliable without an extra app. The device push token goes to Google; message content never does.", "pushSetupFailed": "Setting up push failed: {error}", "pushNoDistributorTitle": "No distributor", "pushNoDistributorBody": "For de-Googled notifications, install a UnifiedPush distributor such as ntfy (F-Droid or Play). Then turn push on again.", "commonOk": "OK", "pushPickDistributorTitle": "Choose a distributor", "pushSubtitleUnifiedPush": "UnifiedPush · {distributor}", "pushNoDistributorFallback": "no distributor", "pushSubtitleFcm": "Google (FCM) — fast, opt-in", "restoreErrorNameRequired": "Enter a display name.", "restoreErrorWordCount": "{wordCount, plural, one{The phrase has 1 word, {requiredWords} are needed.} other{The phrase has {wordCount} words, {requiredWords} are needed.}}", "restoreErrorInvalidPhrase": "The phrase isn't valid — check the words and their order.", "restoreErrorFailed": "Restore failed: {error}", "restoreTitle": "Restore account", "restoreHeading": "Enter your recovery phrase", "restoreIntro": "{wordCount} words from the backup created when you set up your account. This restores your identity (same SEP code — your contacts will still recognize you).", "restoreHistoryWarning": "Message history won't be restored — it's stored only on the original device.", "restorePhraseHint": "word1 word2 word3 …", "restoreWordCountHelper": "{wordCount} / {requiredWords} words", "chatListArchivedCount": "Archived ({count})", "chatListEmptyTitle": "No conversations yet", "chatListEmptySubtitle": "Add a contact and start whispering!", "chatListUnmute": "Unmute", "chatListMute": "Mute", "chatListArchive": "Archive", "qrShareTitle": "My Šepot ID", "qrIdentityNotFound": "Identity not found", "qrShareConnectingTitle": "Connecting to the relay…", "qrShareConnectingBody": "Your QR code and link will appear once Šepot connects for the first time. Just a moment — it only takes a few seconds.", "commonCopiedToClipboard": "Copied to clipboard", "qrShareInviteMessage": "Add me on Šepot!\n\n{shareString}", "commonShare": "Share", "qrShareInfo": "Your contact scans your QR code or pastes the share string into the app.", "reportCategoryChildSafety": "Child endangerment", "reportCategoryChildSafetyHint": "Describe the situation in your own words. Don't paste message content or links to material.", "reportCategoryHarassment": "Harassment or threats", "reportCategoryHarassmentHint": "Someone is intimidating, threatening or harassing you.", "reportCategorySpam": "Spam", "reportCategorySpamHint": "Unsolicited messages, bulk sending.", "reportCategoryFraud": "Fraud", "reportCategoryFraudHint": "An attempt to trick you out of money, keys or personal data.", "reportCategoryOther": "Other", "reportCategoryOtherHint": "Something else we should know about.", "reportErrorEmptyDescription": "Please describe what happened.", "reportErrorConnection": "Couldn't reach the server. Try again, or write to {supportEmail}.", "reportErrorRateLimited": "Too many reports came from your network. Try again in an hour, or write to {supportEmail}.", "reportErrorServer": "Submission failed (code {statusCode}). Please write to {supportEmail}.", "settingsAutoLockNever": "Never", "settingsAutoLock1min": "After 1 minute", "settingsAutoLock15min": "After 15 minutes", "torToggleFailed": "Toggling Tor failed: {error}", "torConnectionTitle": "Connect via Tor", "torDialogBody": "Traffic to the server will go through the Tor network (hides your IP address). Requires the Orbot app installed and running with an active SOCKS proxy on port 9050.\n\nWithout Orbot running, messages won't be sent or received. The connection is usually slower.", "commonTurnOn": "Turn on", "torSubtitleOff": "Direct encrypted connection (WSS). Turn on to hide your IP via Tor.", "torStatusConnected": "Connected via Tor (.onion).", "torStatusConnecting": "Connecting via Tor… (is Orbot running?)", "torStatusWaiting": "Via Tor — waiting for Orbot (SOCKS 9050).", "biometricsPinRequiredFirst": "Set a PIN first — biometrics only complement it.", "biometricsStorageLocked": "Storage is locked — unlock the app with your PIN.", "biometricsNotAvailable": "This device has no biometrics set up.", "biometricsEnrollPromptReason": "Confirm enabling biometric unlock", "biometricsSetupFailed": "Couldn't set up biometrics: {error}", "biometricsTileTitle": "Biometrics", "biometricsTileSubtitle": "Unlock with fingerprint / face (PIN stays as a backup)", "backupErrorCorruptedFile": "Corrupted backup file", "backupErrorUnknownFormat": "Unrecognized backup format", "backupErrorWrongIdentity": "Can't decrypt this backup — does it belong to a different identity?", "attachmentSharedImageFilename": "sepot-image.{ext}", "attachmentDecryptFailed": "Couldn't decrypt the attachment", "pushActionOpen": "Open", "pushChannelMessagesName": "Messages", "pushChannelMessagesDescription": "Alerts about new messages (no content)", "pushNewMessageFrom": "New message from {senderName}", "pushNewMessages": "You have new messages", "archiveTitle": "Archived", "archiveEmpty": "No archived conversations", "archiveUnarchive": "Unarchive", "restoreErrorMnemonicWordCount": "The phrase has {count} words, expected {expected}", "restoreErrorInvalidMnemonic": "Invalid phrase: {message}", "contactsErrorAlreadyExists": "Contact already exists", "commonAppTagline": "Private messenger", "commonE2eBadgeCompact": "E2E", "commonE2eBadgeFull": "End-to-end encrypted", "photoPreviewCaptionHint": "Add a caption…", "photoPreviewDraw": "Draw", "photoPreviewAddText": "Add text", "photoPreviewRotate": "Rotate", "photoPreviewUndo": "Undo", "photoPreviewSend": "Send", "photoPreviewTextDialogTitle": "Text on photo", "photoPreviewRemoveText": "Remove", "photoPreviewDecodeFailed": "Couldn't load the photo" }