2026-07-17 23:20:34 +02:00
|
|
|
|
// English message catalog. Adding a locale = drop a sibling file with the same
|
|
|
|
|
|
// keys and register it in i18n/index.tsx. Keys are flat, dotted namespaces.
|
|
|
|
|
|
// Interpolate with {name} placeholders.
|
|
|
|
|
|
|
|
|
|
|
|
export const en = {
|
|
|
|
|
|
"common.appName": "Webmail",
|
|
|
|
|
|
"common.loading": "Loading…",
|
|
|
|
|
|
"common.cancel": "Cancel",
|
|
|
|
|
|
"common.save": "Save",
|
|
|
|
|
|
"common.saving": "Saving…",
|
|
|
|
|
|
"common.delete": "Delete",
|
|
|
|
|
|
"common.remove": "Remove",
|
2026-07-18 15:27:09 +02:00
|
|
|
|
"common.edit": "Edit",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"common.close": "Close",
|
2026-07-22 07:40:29 +02:00
|
|
|
|
"common.clear": "Clear",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"common.back": "Back",
|
|
|
|
|
|
"common.next": "Next",
|
|
|
|
|
|
"common.signOut": "Sign out",
|
|
|
|
|
|
"common.retry": "Retry",
|
|
|
|
|
|
"common.optional": "optional",
|
|
|
|
|
|
|
|
|
|
|
|
"auth.signInTitle": "Sign in",
|
|
|
|
|
|
"auth.registerTitle": "Create account",
|
|
|
|
|
|
"auth.handle": "Handle",
|
|
|
|
|
|
"auth.handlePlaceholder": "e.g. alice",
|
|
|
|
|
|
"auth.handleHint": "3–30 chars: a–z, 0–9, . _ -",
|
|
|
|
|
|
"auth.password": "Password",
|
|
|
|
|
|
"auth.passwordHint": "at least 8 characters",
|
|
|
|
|
|
"auth.totpCode": "2FA code",
|
|
|
|
|
|
"auth.totpPrompt": "Enter the 6-digit code from your authenticator app",
|
|
|
|
|
|
"auth.signIn": "Sign in",
|
|
|
|
|
|
"auth.signingIn": "Signing in…",
|
|
|
|
|
|
"auth.create": "Create account",
|
|
|
|
|
|
"auth.creating": "Creating…",
|
|
|
|
|
|
"auth.noAccount": "No account?",
|
|
|
|
|
|
"auth.haveAccount": "Already have an account?",
|
|
|
|
|
|
"auth.register": "Register",
|
|
|
|
|
|
|
|
|
|
|
|
"nav.mail": "Mail",
|
|
|
|
|
|
"nav.settings": "Settings",
|
|
|
|
|
|
"nav.compose": "Compose",
|
2026-07-20 23:12:25 +02:00
|
|
|
|
"nav.collapseSidebar": "Collapse sidebar",
|
|
|
|
|
|
"nav.expandSidebar": "Expand sidebar",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"nav.allAccounts": "All accounts",
|
|
|
|
|
|
"nav.inbox": "Inbox",
|
|
|
|
|
|
"nav.archive": "Archive",
|
|
|
|
|
|
"nav.drafts": "Drafts",
|
|
|
|
|
|
"nav.sent": "Sent",
|
|
|
|
|
|
"nav.spam": "Spam",
|
|
|
|
|
|
"nav.trash": "Trash",
|
|
|
|
|
|
"nav.search": "Search mail…",
|
2026-07-26 16:15:49 +02:00
|
|
|
|
"nav.searchInTrash": "Search in Trash",
|
|
|
|
|
|
"nav.searchInSpam": "Search in Spam",
|
2026-07-23 23:00:08 +02:00
|
|
|
|
"search.save": "Save this search",
|
|
|
|
|
|
"search.saved": "Saved searches",
|
|
|
|
|
|
"search.saveNamePrompt": "Name this saved search:",
|
2026-07-18 15:27:09 +02:00
|
|
|
|
"nav.storageQuota": "Storage used",
|
|
|
|
|
|
"nav.refresh": "Refresh all folders",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
|
|
|
|
|
|
"mail.noConversations": "No conversations.",
|
|
|
|
|
|
"mail.selectConversation": "Select a conversation.",
|
|
|
|
|
|
"mail.loadingThread": "Loading thread…",
|
|
|
|
|
|
"mail.expandAll": "Expand all",
|
2026-07-19 18:58:01 +02:00
|
|
|
|
"mail.collapseAll": "Collapse all",
|
|
|
|
|
|
"mail.print": "Print",
|
2026-07-26 16:15:49 +02:00
|
|
|
|
"mail.previewPage": "Page {current} / {total}",
|
|
|
|
|
|
"mail.previewResetZoom": "Reset zoom",
|
|
|
|
|
|
"mail.previewPrev": "Previous",
|
|
|
|
|
|
"mail.previewNext": "Next",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"mail.orderOldest": "Oldest first",
|
|
|
|
|
|
"mail.orderNewest": "Newest first",
|
|
|
|
|
|
"filter.all": "All mail",
|
|
|
|
|
|
"filter.unread": "Unread",
|
|
|
|
|
|
"filter.pinned": "Pinned",
|
|
|
|
|
|
"filter.sortOldest": "Sort oldest first",
|
|
|
|
|
|
"filter.sortNewest": "Sort newest first",
|
2026-07-18 15:27:09 +02:00
|
|
|
|
"pager.prev": "Previous page",
|
|
|
|
|
|
"pager.next": "Next page",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"mail.reply": "Reply",
|
|
|
|
|
|
"mail.replyAll": "Reply all",
|
|
|
|
|
|
"mail.forward": "Forward",
|
|
|
|
|
|
"mail.archive": "Archive",
|
|
|
|
|
|
"mail.markRead": "Mark read",
|
|
|
|
|
|
"mail.markUnread": "Mark unread",
|
|
|
|
|
|
"mail.star": "Star",
|
|
|
|
|
|
"mail.unstar": "Unstar",
|
|
|
|
|
|
"mail.pin": "Pin",
|
|
|
|
|
|
"mail.unpin": "Unpin",
|
|
|
|
|
|
"mail.delete": "Delete",
|
|
|
|
|
|
"mail.restore": "Restore",
|
2026-07-22 21:49:48 +02:00
|
|
|
|
"mail.select": "Select conversation",
|
|
|
|
|
|
"mail.selectAll": "Select all",
|
|
|
|
|
|
"mail.conversationSelected": "1 conversation selected",
|
|
|
|
|
|
"mail.conversationsSelected": "{count} conversations selected",
|
|
|
|
|
|
"mail.alsoIn": "Also delivered to",
|
2026-07-22 07:40:29 +02:00
|
|
|
|
"mail.emptyTrash": "Empty trash",
|
|
|
|
|
|
"mail.emptySpam": "Empty spam",
|
|
|
|
|
|
"mail.emptyConfirm": "Permanently delete everything in this folder? This can't be undone.",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"mail.loadFailed": "Couldn't load this message.",
|
|
|
|
|
|
"mail.imagesBlocked": "Images from this sender are blocked.",
|
|
|
|
|
|
"mail.loadImages": "Load images",
|
|
|
|
|
|
"mail.alwaysFromSender": "Always from this sender",
|
|
|
|
|
|
"mail.to": "to",
|
2026-07-19 18:58:01 +02:00
|
|
|
|
"mail.from": "From",
|
|
|
|
|
|
"mail.subjectLabel": "Subject",
|
|
|
|
|
|
"mail.dateLabel": "Date",
|
|
|
|
|
|
"mail.sizeLabel": "Size",
|
|
|
|
|
|
"mail.actions": "Actions",
|
|
|
|
|
|
"mail.forwardAsAttachment": "Forward as attachment",
|
|
|
|
|
|
"mail.showQuoted": "Show quoted text",
|
|
|
|
|
|
"mail.hideQuoted": "Hide quoted text",
|
|
|
|
|
|
"mail.markReadUnread": "Mark read / unread",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"mail.messageCount": "{count} messages",
|
|
|
|
|
|
"mail.downloadAll": "Download all {count} attachments",
|
|
|
|
|
|
"mail.downloadZip": "Download zip",
|
|
|
|
|
|
"mail.download": "Download",
|
|
|
|
|
|
|
|
|
|
|
|
"compose.newMessage": "New message",
|
|
|
|
|
|
"compose.to": "To",
|
|
|
|
|
|
"compose.cc": "Cc",
|
|
|
|
|
|
"compose.bcc": "Bcc",
|
|
|
|
|
|
"compose.subject": "Subject",
|
|
|
|
|
|
"compose.send": "Send",
|
|
|
|
|
|
"compose.sending": "Sending…",
|
|
|
|
|
|
"compose.discard": "Discard",
|
2026-07-20 23:12:25 +02:00
|
|
|
|
"compose.saveDraft": "Save draft",
|
|
|
|
|
|
"compose.closePrompt": "Save this message as a draft?",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"compose.sent": "Message sent.",
|
2026-07-26 16:15:49 +02:00
|
|
|
|
"compose.undoIn": "{count} seconds to",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"compose.undo": "Undo",
|
|
|
|
|
|
"compose.sendFailed": "Send failed.",
|
|
|
|
|
|
"compose.savingDraft": "Saving draft…",
|
|
|
|
|
|
"compose.draftSaved": "Draft saved",
|
|
|
|
|
|
"compose.noDrafts": "No drafts.",
|
2026-07-18 15:27:09 +02:00
|
|
|
|
"compose.otherClient": "other client",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"compose.noRecipient": "(no recipient)",
|
|
|
|
|
|
"compose.noSubject": "(no subject)",
|
|
|
|
|
|
"compose.from": "From",
|
|
|
|
|
|
"compose.attach": "Attach",
|
|
|
|
|
|
"compose.more": "More",
|
|
|
|
|
|
"compose.expand": "Expand",
|
|
|
|
|
|
"compose.collapse": "Collapse",
|
|
|
|
|
|
"compose.popOut": "Pop out",
|
|
|
|
|
|
"compose.replyLabel": "Reply",
|
|
|
|
|
|
"compose.addRecipient": "Add recipient…",
|
|
|
|
|
|
"compose.fmtBold": "Bold",
|
|
|
|
|
|
"compose.fmtItalic": "Italic",
|
|
|
|
|
|
"compose.fmtUnderline": "Underline",
|
|
|
|
|
|
"compose.fmtStrike": "Strikethrough",
|
|
|
|
|
|
"compose.fmtBulletList": "Bulleted list",
|
|
|
|
|
|
"compose.fmtNumberList": "Numbered list",
|
|
|
|
|
|
"compose.fmtQuote": "Quote",
|
|
|
|
|
|
"compose.fmtLink": "Insert link",
|
|
|
|
|
|
"compose.fmtAlignLeft": "Align left",
|
|
|
|
|
|
"compose.fmtAlignCenter": "Align center",
|
|
|
|
|
|
"compose.fmtAlignRight": "Align right",
|
|
|
|
|
|
"compose.fmtClear": "Clear formatting",
|
|
|
|
|
|
"compose.fmtColor": "Text color",
|
|
|
|
|
|
"compose.fmtHighlight": "Highlight color",
|
|
|
|
|
|
"compose.fmtImage": "Insert image",
|
2026-07-18 15:27:09 +02:00
|
|
|
|
"compose.insertSignature": "Insert signature",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"compose.linkPrompt": "Link URL:",
|
|
|
|
|
|
"compose.imageTooLarge": "Image is too large (max 5 MB).",
|
|
|
|
|
|
"compose.attachTooLarge": "File exceeds the 25 MB limit.",
|
|
|
|
|
|
"compose.attachments": "Attachments",
|
2026-07-26 16:15:49 +02:00
|
|
|
|
"compose.dropAttach": "Drop to attach",
|
|
|
|
|
|
"compose.dropBody": "Drop image to insert · other files attach",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
|
|
|
|
|
|
"wizard.title": "Add mail account",
|
|
|
|
|
|
"wizard.step1": "Your email address",
|
|
|
|
|
|
"wizard.emailPlaceholder": "you@example.com",
|
|
|
|
|
|
"wizard.discover": "Continue",
|
|
|
|
|
|
"wizard.discovering": "Looking up settings…",
|
|
|
|
|
|
"wizard.foundVia": "Found via {source}",
|
|
|
|
|
|
"wizard.imapServer": "IMAP server",
|
|
|
|
|
|
"wizard.smtpServer": "SMTP server",
|
|
|
|
|
|
"wizard.host": "Host",
|
|
|
|
|
|
"wizard.port": "Port",
|
|
|
|
|
|
"wizard.security": "Security",
|
|
|
|
|
|
"wizard.accountPassword": "Account password",
|
|
|
|
|
|
"wizard.appPasswordHint": "For Gmail/Yahoo/iCloud use an app password.",
|
|
|
|
|
|
"wizard.test": "Test & continue",
|
|
|
|
|
|
"wizard.testing": "Testing connection…",
|
|
|
|
|
|
"wizard.testOk": "Connection works.",
|
|
|
|
|
|
"wizard.create": "Add account",
|
|
|
|
|
|
"wizard.creating": "Adding…",
|
|
|
|
|
|
"wizard.created": "Account added — syncing your mail.",
|
|
|
|
|
|
"wizard.startReading": "Start reading now",
|
|
|
|
|
|
"wizard.manualConfig": "Enter settings manually",
|
|
|
|
|
|
"wizard.displayName": "Display name",
|
2026-07-23 23:00:08 +02:00
|
|
|
|
"wizard.syncWindow": "How much mail to sync",
|
|
|
|
|
|
"wizard.syncWindow.all": "All mail",
|
|
|
|
|
|
"wizard.syncWindow.all.hint": "Imports the last 30 days first, then the rest in the background.",
|
|
|
|
|
|
"wizard.syncWindow.3months": "Last 3 months only",
|
|
|
|
|
|
"wizard.syncWindow.3months.hint": "Older mail stays on the server until you download it.",
|
|
|
|
|
|
"wizard.syncWindow.new": "New mail only",
|
|
|
|
|
|
"wizard.syncWindow.new.hint":
|
|
|
|
|
|
"Nothing from before now — download older mail anytime from account settings.",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
|
|
|
|
|
|
"settings.title": "Settings",
|
|
|
|
|
|
"settings.profile": "Profile",
|
|
|
|
|
|
"settings.security": "Security",
|
|
|
|
|
|
"settings.accounts": "Accounts",
|
2026-07-23 23:00:08 +02:00
|
|
|
|
"settings.downloadAllMail": "Sync remaining mail",
|
|
|
|
|
|
"settings.syncedPartially": "Synced partially",
|
|
|
|
|
|
"backfill.importing": "Importing messages… {done} of {total}",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"settings.appearance": "Appearance",
|
|
|
|
|
|
"settings.handle": "Handle",
|
|
|
|
|
|
"settings.recoveryEmail": "Recovery email",
|
|
|
|
|
|
"settings.twoFactor": "Two-factor authentication",
|
|
|
|
|
|
"settings.twoFactorOn": "2FA is enabled.",
|
|
|
|
|
|
"settings.twoFactorOff": "2FA is not enabled.",
|
|
|
|
|
|
"settings.enable2fa": "Enable 2FA",
|
|
|
|
|
|
"settings.disable2fa": "Disable 2FA",
|
|
|
|
|
|
"settings.disable2faPrompt": "Enter your password to turn off 2FA:",
|
|
|
|
|
|
"settings.disable": "Disable",
|
|
|
|
|
|
"settings.twoFactorDisabled": "2FA has been turned off.",
|
|
|
|
|
|
"settings.scanQr": "Scan this in your authenticator app, then enter a code:",
|
|
|
|
|
|
"settings.secret": "Secret",
|
|
|
|
|
|
"settings.confirm": "Confirm",
|
|
|
|
|
|
"settings.sessions": "Active sessions",
|
|
|
|
|
|
"settings.thisDevice": "this device",
|
|
|
|
|
|
"settings.revoke": "Revoke",
|
|
|
|
|
|
"settings.threadOrder": "Conversation order",
|
|
|
|
|
|
"settings.timezone": "Time zone",
|
|
|
|
|
|
"settings.addAccount": "Add account",
|
|
|
|
|
|
"settings.syncState": "State: {state}",
|
|
|
|
|
|
"settings.confirmRemoveAccount": "Remove this account and all its mail?",
|
2026-07-18 15:27:09 +02:00
|
|
|
|
"settings.editAccount": "Edit account",
|
|
|
|
|
|
"settings.color": "Color",
|
|
|
|
|
|
"settings.serverSettings": "Change server settings / password",
|
|
|
|
|
|
"settings.serverSettingsHint": "Enter your mailbox password to apply server or password changes.",
|
|
|
|
|
|
"settings.signature": "Signature",
|
|
|
|
|
|
"settings.configureAccount": "Configure account",
|
|
|
|
|
|
"settings.editSignature": "Edit signature",
|
2026-07-17 23:20:34 +02:00
|
|
|
|
"settings.theme": "Theme",
|
|
|
|
|
|
"theme.light": "Light",
|
|
|
|
|
|
"theme.dark": "Dark",
|
|
|
|
|
|
"theme.system": "System",
|
|
|
|
|
|
"theme.toggle": "Toggle theme",
|
|
|
|
|
|
} as const;
|
|
|
|
|
|
|
|
|
|
|
|
export type MessageKey = keyof typeof en;
|
|
|
|
|
|
export type Messages = Record<MessageKey, string>;
|