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 = {
2026-10-01 20:16:27 +02:00
"common.appName" : "Ultimo Email" ,
2026-07-17 23:20:34 +02:00
"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-08-01 20:22:53 +02:00
"common.copy" : "Copy" ,
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" ,
2026-10-01 21:02:44 +02:00
"auth.rememberDevice" : "Don't ask for the code on this device in future" ,
2026-07-17 23:20:34 +02:00
"auth.signIn" : "Sign in" ,
"auth.signingIn" : "Signing in…" ,
"auth.create" : "Create account" ,
"auth.creating" : "Creating…" ,
"auth.noAccount" : "No account?" ,
2026-10-01 20:16:27 +02:00
"auth.forgotPassword" : "Forgot password?" ,
"auth.forgotTitle" : "Reset your password" ,
"auth.forgotHint" :
"Enter your user name. We'll email a link for choosing a new password to the recovery email address of the account." ,
"auth.changePassword" : "Change password" ,
"auth.sending" : "Sending…" ,
"auth.forgotSent" : "If this account exists you will receive an email to your recovery email address." ,
"auth.backToSignIn" : "Back to sign in" ,
"auth.resetTitle" : "Choose a new password" ,
"auth.newPassword" : "New password" ,
"auth.repeatPassword" : "Repeat the new password" ,
"auth.passwordsDiffer" : "The two passwords are different." ,
"auth.passwordTooShort" : "Use at least 8 characters." ,
"auth.resetTotpPrompt" :
"This account uses 2-step verification. Enter the 6-digit code from your authenticator app to finish." ,
"auth.confirm" : "Confirm" ,
"auth.resetDone" : "Your password has been changed. You have been signed out everywhere — sign in with the new password." ,
"auth.resetInvalid" :
"This link is invalid, was already used, or has expired. Request a new one to change your password." ,
"auth.requestNewLink" : "Request a new link" ,
2026-07-17 23:20:34 +02:00
"auth.haveAccount" : "Already have an account?" ,
"auth.register" : "Register" ,
2026-09-16 20:34:08 +02:00
"auth.checking" : "Checking…" ,
"auth.firstUserTitle" : "Create the administrator account" ,
"auth.firstUserHint" :
"This is the first account on this server, so it becomes the administrator. Registration closes automatically once it exists." ,
"auth.registrationClosedTitle" : "Registration is closed" ,
"auth.registrationClosed" :
"This server is not accepting new accounts. Ask the administrator to open registration." ,
2026-07-17 23:20:34 +02:00
"nav.mail" : "Mail" ,
2026-08-02 08:48:33 +02:00
"nav.back" : "Back" ,
2026-07-17 23:20:34 +02:00
"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." ,
2026-09-25 20:17:37 +02:00
"mail.me" : "me" ,
2026-09-28 08:09:09 +02:00
"nav.menu" : "Menu" ,
2026-07-17 23:20:34 +02:00
"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-10-06 21:50:29 +02:00
"mail.previewVideoUnsupported" : "This video can't be played in the browser." ,
2026-07-26 16:15:49 +02:00
"mail.previewPage" : "Page {current} / {total}" ,
"mail.previewResetZoom" : "Reset zoom" ,
"mail.previewPrev" : "Previous" ,
"mail.previewNext" : "Next" ,
2026-08-06 19:23:27 +02:00
"preview.pdfProtected" : "This PDF is password-protected" ,
"preview.password" : "Password" ,
"preview.pdfWrongPassword" : "Incorrect password — try again" ,
"preview.unlock" : "Unlock" ,
"preview.pdfError" : "Couldn't open this PDF." ,
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" ,
2026-08-02 21:34:22 +02:00
"mail.more" : "More" ,
"mail.markAllRead" : "Mark all as read" ,
2026-08-03 20:53:35 +02:00
"mail.labels" : "Labels" ,
"mail.noLabels" : "No labels yet" ,
"mail.createLabel" : "Create new…" ,
"mail.labelName" : "Label name" ,
2026-08-03 08:38:44 +02:00
"panel.toggle" : "Toggle side panel" ,
"panel.calendar" : "Calendar" ,
"panel.people" : "People" ,
"panel.attachments" : "Attachments" ,
"panel.search" : "Search" ,
"panel.newEvent" : "New event" ,
"panel.miniCalendar" : "Mini calendar" ,
"panel.week" : "Week" ,
"panel.month" : "Month" ,
"panel.view" : "View" ,
"panel.day" : "Day" ,
"panel.3days" : "3 days" ,
"panel.agenda" : "Agenda" ,
"panel.allCalendars" : "All calendars" ,
"panel.searchEvents" : "Search events" ,
"panel.today" : "Today" ,
"panel.noEvents" : "No events" ,
"panel.untitled" : "(untitled)" ,
"panel.allDay" : "All day" ,
"panel.openCalendar" : "Open calendar in new tab" ,
"panel.inConversation" : "In conversation" ,
"panel.allContacts" : "All contacts" ,
"panel.recent" : "Recent" ,
"panel.vips" : "VIPs" ,
"panel.autosaved" : "Autosaved" ,
"panel.senders" : "Senders" ,
"panel.noPeople" : "No people" ,
"panel.composeAll" : "Compose to all" ,
"panel.inviteAll" : "Invite all to new event" ,
"panel.call" : "Call" ,
"panel.compose" : "Compose" ,
"panel.invite" : "Invite" ,
"panel.contactDetails" : "Contact details" ,
"panel.showAll" : "Show all" ,
"panel.mailSection" : "Mail" ,
"panel.noSubject" : "(no subject)" ,
"panel.findAll" : "Find all conversations with {name}" ,
"panel.eventsSection" : "Events" ,
"panel.noMatches" : "No matches found" ,
"panel.openContact" : "Open contact in new tab" ,
"panel.openConversation" : "Open a conversation to see its attachments." ,
"panel.noAttachments" : "No attachments" ,
"panel.download" : "Download" ,
2026-07-22 07:40:29 +02:00
"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" ,
2026-09-28 08:09:09 +02:00
"compose.showQuoted" : "Show or hide the quoted message" ,
2026-07-17 23:20:34 +02:00
"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" ,
2026-09-21 21:32:41 +02:00
"compose.minimize" : "Minimize" ,
"compose.restore" : "Restore" ,
"compose.moreWindows" : "More drafts" ,
2026-07-17 23:20:34 +02:00
"compose.expand" : "Expand" ,
"compose.collapse" : "Collapse" ,
"compose.popOut" : "Pop out" ,
"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:" ,
2026-10-04 23:21:44 +02:00
"compose.linkOpen" : "Open the link:" ,
"compose.linkEdit" : "Edit" ,
"compose.linkDelete" : "Delete" ,
"compose.linkSave" : "Save" ,
2026-10-04 23:51:31 +02:00
"compose.spellTitle" : "Spelling and grammar" ,
"compose.spellIgnore" : "Ignore" ,
"compose.spellRemove" : "(remove)" ,
"compose.spellMenu" : "Spelling" ,
"compose.spellAuto" : "Auto-detect" ,
"compose.spellOff" : "Off" ,
"compose.spellOffMessage" : "Off for this message" ,
2026-07-17 23:20:34 +02:00
"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" ,
2026-08-07 07:59:26 +02:00
"wizard.appPasswordHint" : "For Gmail, Yahoo, iCloud, or Outlook use an app password." ,
"wizard.help" : "Help" ,
"wizard.appPasswordHelp.title" : "Set up an app password" ,
"wizard.appPasswordHelp.intro" :
"These providers need a one-time app password instead of your normal password:" ,
"wizard.appPasswordHelp.prefix" : "Make sure to" ,
"wizard.appPasswordHelp.twoStep" : "turn on 2-step verification" ,
"wizard.appPasswordHelp.middle" : "if you haven't done it yet, and then" ,
"wizard.appPasswordHelp.generate" : "generate the app password" ,
2026-07-17 23:20:34 +02:00
"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" ,
2026-08-05 18:04:49 +02:00
"wizard.backToAccounts" : "Back to accounts" ,
2026-07-17 23:20:34 +02:00
"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-08-05 18:04:49 +02:00
"wizard.syncSpam" : "Sync spam?" ,
"wizard.syncSpam.hint" : "Also import the Spam/Junk folder. Off by default." ,
2026-07-17 23:20:34 +02:00
2026-08-04 19:59:52 +02:00
// Provider credential-helper panel (app passwords, SPEC §6.2.2).
"wizard.appPassword.title" : "Create an app password" ,
"wizard.appPassword.intro" :
"This provider needs a one-time app password instead of your normal password. Open the page below, generate one, and paste it here." ,
"wizard.appPassword.open" : "Open {provider} app passwords" ,
"wizard.appPassword.appNameHint" : "Suggested name: {hint}" ,
"wizard.appPassword.pastePlaceholder" : "Paste the app password" ,
"wizard.appPassword.verifying" : "Verifying…" ,
"wizard.appPassword.connected" : "Connected ✓" ,
"wizard.appPassword.docs" : "Provider help" ,
"wizard.appPassword.useManual" : "Enter server settings manually" ,
"wizard.appPassword.provider.gmail" : "Google" ,
"wizard.appPassword.provider.yahoo" : "Yahoo" ,
"wizard.appPassword.provider.icloud" : "iCloud" ,
"wizard.appPassword.provider.outlook" : "Microsoft" ,
// auth_failed recovery branch (the two real dead-ends).
"wizard.appPassword.failTitle" : "That password didn't work" ,
"wizard.appPassword.failCauses" :
"Common causes: 2-Step Verification isn't fully enabled yet; a brand-new account for which the provider withholds app passwords until it ages; or a work/school account where an admin disabled the feature." ,
"wizard.appPassword.oauthInstead" : "Sign in with Google instead" ,
// Gmail steps.
"wizard.help.gmail.step1" : "Turn on 2-Step Verification for your Google account if you haven't." ,
2026-08-05 18:04:49 +02:00
"wizard.help.gmail.step2" : "Click the button to generate an app password." ,
"wizard.help.gmail.step3" : "On the App passwords page, name the password (e.g. \"ultimo.email\") and create it." ,
"wizard.help.gmail.step4" : "Copy the 16-character password and paste it below." ,
2026-08-04 19:59:52 +02:00
// Outlook / Microsoft personal steps.
"wizard.help.outlook.step1" : "Turn on two-step verification in your Microsoft account security settings." ,
"wizard.help.outlook.step2" : "Under Advanced security options, create a new app password." ,
"wizard.help.outlook.step3" : "Copy the generated password and paste it below." ,
// Yahoo steps.
"wizard.help.yahoo.step1" : "Open Account Security and turn on two-step verification." ,
"wizard.help.yahoo.step2" : "Choose \"Generate app password\" and name it." ,
"wizard.help.yahoo.step3" : "Copy the password and paste it below." ,
// iCloud steps.
"wizard.help.icloud.step1" : "Turn on two-factor authentication for your Apple Account." ,
"wizard.help.icloud.step2" : "Under Sign-In and Security, generate an app-specific password." ,
"wizard.help.icloud.step3" : "Copy the password and paste it below." ,
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-08-07 07:59:26 +02:00
"backfill.preparing" : "Preparing to import messages…" ,
2026-07-17 23:20:34 +02:00
"settings.appearance" : "Appearance" ,
"settings.handle" : "Handle" ,
"settings.recoveryEmail" : "Recovery email" ,
2026-10-04 23:51:31 +02:00
"settings.spellcheck" : "Spelling and grammar check" ,
"settings.on" : "On" ,
"settings.off" : "Off" ,
2026-10-06 20:15:17 +02:00
"settings.spellcheckLanguage" : "Spellchecking language" ,
2026-10-04 23:51:31 +02:00
"settings.spellcheckAuto" : "Auto-detect (each paragraph)" ,
"settings.spellcheckUnavailable" : "Not available: this server has no spell-checking engine set up." ,
2026-10-01 20:16:27 +02:00
"settings.recoveryEmailHint" :
"If you forget your password, a link to choose a new one is sent here." ,
"settings.recoveryEmailNew" : "Recovery email address" ,
"settings.recoveryEmailRemoveHint" : "Leave empty to remove it." ,
"settings.currentPassword" : "Current password" ,
"settings.typePassword" : "Type your password — for this confirmation it can't be filled in or pasted." ,
"settings.change" : "Change" ,
"settings.add" : "Add" ,
"settings.saving" : "Saving…" ,
2026-07-17 23:20:34 +02:00
"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" ,
2026-07-28 16:33:34 +02:00
"settings.timeFormat" : "Time format" ,
"settings.timeFormat24" : "24-hour (14:30)" ,
"settings.timeFormat12" : "12-hour (2:30 PM)" ,
2026-08-01 20:22:53 +02:00
"settings.calendars" : "Calendars" ,
"settings.myCalendars" : "My calendars" ,
"settings.calendarOptions" : "Calendar options" ,
"settings.createCalendar" : "Create calendar" ,
"settings.editCalendar" : "Edit calendar" ,
"settings.export" : "Export" ,
"settings.calendarDisplay" : "Calendar display" ,
"settings.default" : "Default" ,
"settings.defaultCalendar" : "Default calendar" ,
"settings.firstCalendar" : "First calendar" ,
"settings.defaultRemindersTimed" : "Default reminders for timed events" ,
"settings.defaultRemindersAllday" : "Default reminders for all-day events" ,
"settings.addReminder" : "Add reminder" ,
"settings.name" : "Name" ,
"settings.onlyYou" : "Only you can see this calendar." ,
"settings.publish" : "Publish" ,
"settings.publishHint" : "Share this calendar (read-only) with anyone." ,
"settings.fullEventDetails" : "Full event details" ,
"settings.freeBusy" : "Free/busy information" ,
"settings.addAccountHint" : "Connect an external calendar account." ,
"settings.subscriptions" : "Subscriptions" ,
"settings.subscriptionsHint" : "Add a read-only calendar from an iCal (.ics) URL." ,
"settings.subscribe" : "Subscribe" ,
"settings.subscribeUrl" : "iCal (.ics) URL" ,
"settings.subscribed" : "Subscribed" ,
"settings.comingSoon" : "Coming soon" ,
"settings.subscribeError" : "Couldn't subscribe to that URL." ,
2026-08-08 10:27:21 +02:00
"settings.connectTitle" : "Connect {provider}" ,
"settings.connect" : "Connect" ,
"settings.connecting" : "Connecting…" ,
"settings.connectError" : "Couldn't connect. Check the details and try again." ,
"settings.connectAuthFailed" :
"Sign-in was rejected. If you have two-factor auth on, use an app password (not your normal password)." ,
"settings.connectPrivateHost" :
"That server is on a private network, which isn't reachable for security reasons. Use a publicly-accessible HTTPS address." ,
"settings.connectUnreachable" :
"Couldn't reach that server. Check the URL is correct and uses https://." ,
"settings.connectNoCalendars" : "Connected, but no calendars were found on that account." ,
"settings.connectNeedsUrl" : "Enter the CalDAV server URL." ,
"settings.davServerUrl" : "CalDAV server URL" ,
"settings.appleId" : "Apple ID (email)" ,
"settings.username" : "Username" ,
"settings.appPassword" : "App-specific password" ,
"settings.password" : "Password" ,
"settings.icloudHint" :
"Use an app-specific password from account.apple.com → Sign-In and Security." ,
"settings.calendarCount" : "{count} calendars" ,
2026-08-02 08:48:33 +02:00
"settings.removeSubscription" : "Remove subscription" ,
"settings.removeSubscriptionConfirm" : "Stop syncing “{name}” and remove its events?" ,
"settings.deleteCalendar" : "Delete calendar" ,
"settings.thisCalendar" : "this calendar" ,
"settings.deleteCalendarConfirm" : "Delete “{name}” and all of its events? This can't be undone." ,
"settings.showAlert" : "Show an alert" ,
"settings.emailMe" : "Email me" ,
"settings.invitations" : "Invitations" ,
"settings.inviteWhen" : "When I receive events by email" ,
"settings.inviteAddUpdate" : "Add new events to my calendar and update events that have changed" ,
"settings.inviteUpdateOnly" : "Only update events that I have already added to my calendar" ,
"settings.inviteNone" : "Do not automatically update my calendar" ,
"settings.addNewFrom" : "Add new events from" ,
"settings.myContacts" : "My contacts" ,
"settings.anyone" : "Anyone" ,
"settings.addToCalendar" : "Add to calendar" ,
"settings.alsoFile" : "Also mark the message as read and file it" ,
2026-07-28 16:33:34 +02:00
"settings.integrations" : "Integrations" ,
2026-09-16 20:34:08 +02:00
2026-10-01 20:16:27 +02:00
"admin.title" : "Ultimo Email administration" ,
2026-09-16 20:34:08 +02:00
"admin.signInTitle" : "Administrator sign-in" ,
"admin.signInHint" : "Sign in with an administrator account to manage this server." ,
"admin.signOut" : "Sign out" ,
"admin.signedInAs" : "Signed in as {handle}" ,
"admin.notAdminTitle" : "Not an administrator" ,
"admin.notAdmin" :
"{handle} is signed in, but does not have administrator rights on this server." ,
"admin.registration" : "New user registration" ,
"admin.registrationOn" : "Open" ,
"admin.registrationOff" : "Closed" ,
"admin.registrationHelp" :
"While closed, the signup page is hidden and the server refuses new accounts." ,
"admin.defaultQuota" : "Default quota for new users" ,
"admin.quotaHelp" :
"Applies to accounts created from now on. Existing mailboxes keep the quota they were given." ,
"admin.save" : "Save" ,
"admin.saving" : "Saving…" ,
"admin.saved" : "Saved" ,
"admin.quotaInvalid" : "Enter a size greater than 0." ,
2026-10-03 18:13:43 +02:00
"display.title" : "Mailbox display" ,
"display.readingPane" : "Reading pane" ,
"display.side" : "Side" ,
"display.bottom" : "Bottom" ,
"display.off" : "Off" ,
2026-10-06 20:15:17 +02:00
"display.dividers" : "Show a dividing line between rows" ,
2026-10-01 20:16:27 +02:00
"admin.mail" : "Outgoing system mail" ,
"admin.mailHelp" :
"The mail account the server sends password-reset links from. Without it, “Forgot password?” sends nothing." ,
"admin.mailOn" : "Set up — password-reset links can be sent." ,
"admin.mailOff" : "Not set up — password-reset links cannot be sent yet." ,
"admin.smtpHost" : "SMTP server" ,
"admin.smtpPort" : "Port" ,
"admin.smtpSecurity" : "Security" ,
"admin.smtpStarttls" : "STARTTLS" ,
"admin.smtpSsl" : "SSL/TLS" ,
"admin.smtpNone" : "None" ,
"admin.smtpUsername" : "Login" ,
"admin.smtpPassword" : "Password" ,
"admin.smtpPasswordKept" : "(stored — leave empty to keep)" ,
"admin.smtpPasswordRemove" : "Remove the stored password" ,
"admin.smtpFrom" : "From address" ,
"admin.publicUrl" : "Public address of this server" ,
"admin.publicUrlHint" : "Where users open Ultimo Email, e.g. https://mail.example.com — reset links point here." ,
"admin.testTo" : "Send a test email to" ,
"admin.sendTest" : "Send test" ,
"admin.testSent" : "Test email sent." ,
"admin.users" : "Users" ,
"admin.userSearch" : "Search by login, email address or name…" ,
"admin.noUsers" : "No users match." ,
"admin.you" : "you" ,
"admin.adminBadge" : "admin" ,
"admin.blockedBadge" : "blocked" ,
"admin.usage" : "{used} of {quota}" ,
"admin.noMailAccounts" : "No mail accounts connected" ,
"admin.userQuota" : "Quota" ,
"admin.blockedSince" : "Blocked since {date}. This user cannot sign in." ,
"admin.block" : "Block account" ,
"admin.unblock" : "Unblock account" ,
"admin.blockConfirm" :
"Block {handle}? They are signed out everywhere and cannot sign in until you unblock them. Their mail and data are kept." ,
"admin.deleteUser" : "Delete account" ,
"admin.deleteConfirm" :
"Permanently delete {handle} and all of their mail, contacts, calendars and settings? This can't be undone." ,
"admin.selfNote" : "This is your own account: it cannot be blocked or deleted from here." ,
"admin.cancel" : "Cancel" ,
"admin.close" : "Close" ,
2026-07-28 16:33:34 +02:00
"settings.jitsi" : "Jitsi Meet" ,
"settings.jitsiHint" :
"Server used to generate video-call links for calendar events. Leave empty to use the public https://meet.jit.si/ server." ,
2026-07-17 23:20:34 +02:00
"settings.addAccount" : "Add account" ,
"settings.syncState" : "State: {state}" ,
"settings.confirmRemoveAccount" : "Remove this account and all its mail?" ,
2026-08-07 07:59:26 +02:00
"settings.removingAccount" : "Removing account…" ,
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" ,
2026-10-05 18:54:17 +02:00
"offline.label" : "Offline" ,
"offline.backOnline" : "Back online" ,
"offline.explainSaved" : "Offline — showing mail saved on this device, last updated {when}." ,
"offline.explainSavedNoTime" : "Offline — showing mail saved on this device." ,
"offline.explainNotSaved" :
2026-10-05 20:45:37 +02:00
"Can't reach the server. To read recent mail without a connection, turn on offline access in Settings → Accounts." ,
2026-10-05 18:54:17 +02:00
"offline.noticeSaved" : "You're offline. Recent mail is still available." ,
"offline.noticeNotSaved" : "You're offline — can't reach the server." ,
"offline.notAvailable" : "Not available offline" ,
"offline.threadNotSaved" : "This conversation isn't saved on this device." ,
"offline.folderNotSaved" : "This folder isn't saved on this device." ,
2026-10-05 21:11:41 +02:00
"offline.noticeScheduled" : "Saved to Scheduled — it will be sent when you're back online." ,
"offline.noticeSendingScheduled" : "Sending {count} scheduled messages…" ,
"offline.draftsNotSaved" : "Only drafts written on this device are available offline." ,
"compose.sendLater" : "Schedule" ,
"compose.savedOnDevice" : "Saved on this device" ,
2026-10-06 20:15:17 +02:00
"compose.forwardAttachFailed" : "Couldn't attach the original message's files." ,
2026-10-05 21:11:41 +02:00
"compose.attachOnDevice" : "On this device — uploaded when you're back online" ,
"compose.onDevice" : "On this device" ,
"nav.scheduled" : "Scheduled" ,
2026-10-05 22:08:42 +02:00
"scheduled.help" : "These go out by themselves — when you're back online, or once the mail server takes them." ,
2026-10-05 21:11:41 +02:00
"scheduled.empty" : "Nothing scheduled." ,
"scheduled.waiting" : "Waiting" ,
"scheduled.sending" : "Sending…" ,
"scheduled.failed" : "Not sent" ,
2026-10-05 22:08:42 +02:00
"scheduled.retrying" : "Retrying {when}" ,
"scheduled.retryNow" : "Retry now" ,
"scheduled.edit" : "Edit" ,
"scheduled.delete" : "Delete" ,
"scheduled.statusRetrying" :
"The mail server couldn't take this message yet ({count} tries). Next try {when}; it keeps trying until {until}." ,
"scheduled.statusFailed" : "Not sent: {error}" ,
"scheduled.lastError" : "Last error: {error}" ,
"scheduled.to" : "To" ,
"send.noticeRetrying" : "Couldn't send “{subject}” — it's in Scheduled and will be retried." ,
"send.noticeFailed" : "Couldn't send “{subject}” — it's in Scheduled: {error}" ,
"send.noticeSent" : "Sent “{subject}”." ,
"account.unreachable" : "Can't reach the mail server since {when}" ,
"account.authFailed" : "Sign-in failed — open Settings → Accounts → Configure account and enter the password again" ,
"settings.stateUnreachable" : "Can't reach the server since {when}" ,
"settings.stateAuthFailed" : "Sign-in failed — use Configure account to enter the password again" ,
2026-10-05 18:54:17 +02:00
"offline.searchPlaceholder" : "Search (offline)" ,
"offline.cantReach" : "Can't reach the server." ,
"offline.settingTitle" : "Offline access" ,
"offline.settingHelp" :
"Keep your newest 50 Inbox conversations, and the ones you open, on this device, so you can read them without a connection. They are stored unencrypted in this browser and removed when you sign out — leave this off on shared computers." ,
"offline.settingStatus" : "{count} conversations saved · {size} · updated {when}" ,
"offline.settingStatusNoTime" : "{count} conversations saved · {size}" ,
"offline.settingSaving" : "Saving recent mail…" ,
"offline.settingUnsupported" :
"Not available here: browsers allow offline access only when the app is opened over HTTPS." ,
2026-07-17 23:20:34 +02:00
} as const ;
export type MessageKey = keyof typeof en ;
export type Messages = Record < MessageKey , string >;