- Contact groups/lists, vCard import/export (RFC 6350), bulk operations - Advanced search with JMAP filter panel, search chips, cross-mailbox queries - Vacation responder with JMAP VacationResponse, settings tab, sidebar indicator - TOTP two-factor authentication support - Docker multi-stage build with standalone output and docker-compose - CSP Report-Only headers and security headers via proxy middleware - Virtual scrolling for large email lists - Structured server-side logger (text/JSON, configurable level) - 450+ tests (contacts, vCard, threads, headers, identity, components) - Playwright E2E framework setup - Updated README and ROADMAP with all new features
929 lines
31 KiB
JSON
929 lines
31 KiB
JSON
{
|
|
"login": {
|
|
"title": "Webmail",
|
|
"username_label": "Email",
|
|
"username_placeholder": "user@example.com",
|
|
"password_label": "Password",
|
|
"password_placeholder": "Enter your password",
|
|
"sign_in": "Sign in",
|
|
"signing_in": "Signing in...",
|
|
"loading": "Loading...",
|
|
"error": {
|
|
"invalid_credentials": "Invalid email or password",
|
|
"connection_failed": "Failed to connect to the server",
|
|
"generic": "An error occurred. Please try again.",
|
|
"totp_invalid": "Invalid authentication code. Please check your authenticator app."
|
|
},
|
|
"config_error": {
|
|
"title": "Configuration Error",
|
|
"fetch_failed": "Unable to load application configuration. Please try again later.",
|
|
"server_not_configured": "The mail server has not been configured. Please contact your administrator."
|
|
},
|
|
"remove_from_history": "Remove from history",
|
|
"totp_toggle": "I have two-factor authentication",
|
|
"totp_label": "Authentication code",
|
|
"totp_placeholder": "000000",
|
|
"totp_hide": "Hide two-factor authentication"
|
|
},
|
|
"sidebar": {
|
|
"close": "Close",
|
|
"compose": "Compose",
|
|
"search_placeholder": "Search mail...",
|
|
"storage": "Storage",
|
|
"sign_out": "Sign out",
|
|
"contacts": "Contacts",
|
|
"settings": "Settings",
|
|
"loading_mailboxes": "Loading mailboxes...",
|
|
"push_connected": "Real-time updates active",
|
|
"push_disconnected": "Real-time updates inactive",
|
|
"theme": {
|
|
"light": "Light mode",
|
|
"dark": "Dark mode",
|
|
"system": "System theme"
|
|
},
|
|
"language": {
|
|
"title": "Language"
|
|
},
|
|
"mailboxes": {
|
|
"inbox": "Inbox",
|
|
"sent": "Sent",
|
|
"drafts": "Drafts",
|
|
"trash": "Trash",
|
|
"archive": "Archive",
|
|
"starred": "Starred",
|
|
"all_mail": "All Mail",
|
|
"spam": "Spam",
|
|
"important": "Important"
|
|
},
|
|
"expand": "Expand",
|
|
"collapse": "Collapse",
|
|
"expand_tooltip": "Expand",
|
|
"collapse_tooltip": "Collapse",
|
|
"mobile": {
|
|
"search": "Search",
|
|
"compose": "Compose",
|
|
"go_back": "Go back"
|
|
},
|
|
"clear_search": "Clear search",
|
|
"vacation_active": "Vacation responder is active"
|
|
},
|
|
"email_list": {
|
|
"no_emails": "No emails",
|
|
"no_emails_description": "Start by composing a new email",
|
|
"loading": "Loading emails...",
|
|
"unread": "unread",
|
|
"to_me": "To me",
|
|
"to_recipients": "To {{count}} recipients",
|
|
"and_others": "and {{count}} others",
|
|
"draft": "Draft",
|
|
"starred": "Starred",
|
|
"conversations_count": "{count} of {total} conversations",
|
|
"conversations_count_plus": "{count}+ conversations",
|
|
"conversations_count_simple": "{count} conversations",
|
|
"no_conversations": "No conversations",
|
|
"loading_more": "Loading more emails...",
|
|
"no_more_emails": "No more emails to load",
|
|
"batch_actions": {
|
|
"mark_read": "Mark as read",
|
|
"mark_unread": "Mark as unread",
|
|
"delete": "Delete",
|
|
"clear_selection": "Clear selection"
|
|
}
|
|
},
|
|
"email_viewer": {
|
|
"no_email_selected": "No email selected",
|
|
"no_email_description": "Select an email from the list to view it here",
|
|
"no_conversation_selected": "No conversation selected",
|
|
"no_conversation_description": "Choose a conversation from the list to read it here",
|
|
"no_subject": "(No Subject)",
|
|
"loading_email": "Loading email...",
|
|
"loading": "Loading...",
|
|
"reply": "Reply",
|
|
"reply_all": "Reply All",
|
|
"forward": "Forward",
|
|
"delete": "Delete",
|
|
"archive": "Archive",
|
|
"star": "Star",
|
|
"unstar": "Unstar",
|
|
"mark_unread": "Mark as unread",
|
|
"mark_read": "Mark as read",
|
|
"print": "Print",
|
|
"view_source": "View source",
|
|
"email_source": "Email Source",
|
|
"copy_source": "Copy to clipboard",
|
|
"source_copied": "Source copied to clipboard",
|
|
"attachments": "Attachments",
|
|
"important": "Important",
|
|
"download": "Download",
|
|
"from": "From",
|
|
"to": "To",
|
|
"cc": "CC",
|
|
"bcc": "BCC",
|
|
"date": "Date",
|
|
"subject": "Subject",
|
|
"show_details": "Show details",
|
|
"hide_details": "Hide details",
|
|
"external_content_warning": "Images and external content have been blocked",
|
|
"load_external_content": "Load images",
|
|
"trust_sender": "Always trust this sender",
|
|
"back_to_list": "Back to list",
|
|
"message_details": "Message Details",
|
|
"more_reply_options": "More reply options",
|
|
"set_color": "Set color",
|
|
"more_actions": "More actions",
|
|
"remove_color": "Remove color",
|
|
"more_count": "+{count} more",
|
|
"characters_count": "{count} characters",
|
|
"quick_reply_placeholder": "Write a quick reply...",
|
|
"more_options": "More options",
|
|
"sending": "Sending...",
|
|
"security_authentication": "Security & Authentication",
|
|
"technical_details": "Technical Details",
|
|
"message_id_label": "Message-ID:",
|
|
"reply_to_label": "Reply-To:",
|
|
"delivery_time_label": "Delivery time:",
|
|
"conversation_part_label": "Part of conversation:",
|
|
"previous_messages": "{count} previous message",
|
|
"previous_messages_plural": "{count} previous messages",
|
|
"time": {
|
|
"day": "day",
|
|
"days": "days",
|
|
"hour": "hour",
|
|
"hours": "hours",
|
|
"minute": "minute",
|
|
"minutes": "minutes"
|
|
},
|
|
"unknown_sender": "Unknown",
|
|
"recipient_me": "me",
|
|
"recipient_and_others": "{name} and {count} others",
|
|
"recipient_to_prefix": "To:",
|
|
"authentication": {
|
|
"title": "Authentication",
|
|
"status": {
|
|
"verified": "Verified",
|
|
"warning": "Warning",
|
|
"none": "Not authenticated"
|
|
},
|
|
"spf": {
|
|
"pass": "SPF Pass",
|
|
"fail": "SPF Fail",
|
|
"none": "No SPF"
|
|
},
|
|
"dkim": {
|
|
"pass": "DKIM Valid",
|
|
"fail": "DKIM Invalid",
|
|
"none": "No DKIM"
|
|
},
|
|
"dmarc": {
|
|
"pass": "DMARC Pass",
|
|
"fail": "DMARC Fail",
|
|
"none": "No DMARC"
|
|
},
|
|
"spam_score": "Spam Score"
|
|
},
|
|
"headers": {
|
|
"routing": "Routing",
|
|
"received": "Received",
|
|
"message_id": "Message ID",
|
|
"list_info": "List Information"
|
|
},
|
|
"color_tag": {
|
|
"title": "Color Tag",
|
|
"red": "Red",
|
|
"orange": "Orange",
|
|
"yellow": "Yellow",
|
|
"green": "Green",
|
|
"blue": "Blue",
|
|
"purple": "Purple",
|
|
"pink": "Pink",
|
|
"none": "None"
|
|
},
|
|
"tooltips": {
|
|
"reply": "Reply",
|
|
"archive": "Archive",
|
|
"delete": "Delete"
|
|
},
|
|
"spam": {
|
|
"button_title": "Report spam",
|
|
"not_spam_title": "Mark as legitimate",
|
|
"toast_success": "Moved to Junk",
|
|
"toast_batch": "{count} emails moved to Junk",
|
|
"toast_undo": "Undo",
|
|
"toast_not_spam_success": "Moved to Inbox",
|
|
"toast_not_spam_batch": "{count} emails moved to Inbox",
|
|
"error": "Failed to report spam",
|
|
"error_not_spam": "Failed to restore email"
|
|
},
|
|
"unsubscribe_banner": {
|
|
"label": "Newsletter",
|
|
"button": "Unsubscribe",
|
|
"confirm_title": "Unsubscribe from this sender?",
|
|
"confirm_button": "Confirm",
|
|
"cancel": "Cancel",
|
|
"success_http": "Unsubscribe page opened in new tab",
|
|
"success_mailto": "Unsubscribe request sent to your email client",
|
|
"error": "Unable to unsubscribe",
|
|
"dismiss": "Dismiss"
|
|
}
|
|
},
|
|
"email_composer": {
|
|
"new_message": "New Message",
|
|
"reply": "Reply",
|
|
"reply_all": "Reply All",
|
|
"forward": "Forward",
|
|
"reply_to": "Reply",
|
|
"reply_all_to": "Reply All",
|
|
"forward_message": "Forward",
|
|
"from": "From",
|
|
"to": "To",
|
|
"cc": "CC",
|
|
"bcc": "BCC",
|
|
"subject": "Subject",
|
|
"body_placeholder": "Write your message...",
|
|
"send": "Send",
|
|
"cancel": "Cancel",
|
|
"attach": "Attach",
|
|
"discard": "Discard",
|
|
"discard_draft_confirm": "You have unsaved changes. Do you want to discard this draft?",
|
|
"saving": "Saving...",
|
|
"draft_saved": "Draft saved",
|
|
"save_failed": "Failed to save",
|
|
"to_placeholder": "Recipient email addresses (comma separated)",
|
|
"cc_placeholder": "Cc recipients (comma separated)",
|
|
"bcc_placeholder": "Bcc recipients (comma separated)",
|
|
"subject_placeholder": "Subject",
|
|
"cc_label": "Cc:",
|
|
"bcc_label": "Bcc:",
|
|
"subject_label": "Subject:",
|
|
"file_size_kb": "KB",
|
|
"prefix": {
|
|
"forward": "Fwd:",
|
|
"reply": "Re:"
|
|
},
|
|
"no_subject": "(No Subject)",
|
|
"unknown_sender": "Unknown",
|
|
"quote": {
|
|
"reply_header": "On {{date}}, {{sender}} wrote:",
|
|
"forward_header": "---------- Forwarded message ----------",
|
|
"from": "From: {{sender}}",
|
|
"date": "Date: {{date}}",
|
|
"subject": "Subject: {{subject}}",
|
|
"to": "To: {{recipients}}"
|
|
},
|
|
"remove_sub_address": "Remove sub-address"
|
|
},
|
|
"common": {
|
|
"loading": "Loading...",
|
|
"error": "Error",
|
|
"success": "Success",
|
|
"cancel": "Cancel",
|
|
"save": "Save",
|
|
"delete": "Delete",
|
|
"edit": "Edit",
|
|
"close": "Close",
|
|
"search": "Search",
|
|
"refresh": "Refresh",
|
|
"settings": "Settings",
|
|
"help": "Help",
|
|
"logout": "Logout",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"unknown": "Unknown",
|
|
"app_title": "Webmail"
|
|
},
|
|
"notifications": {
|
|
"email_sent": "Email sent successfully",
|
|
"email_deleted": "Email deleted",
|
|
"email_archived": "Email archived",
|
|
"email_starred": "Email starred",
|
|
"email_unstarred": "Email unstarred",
|
|
"email_marked_read": "Email marked as read",
|
|
"email_marked_unread": "Email marked as unread",
|
|
"copied_to_clipboard": "Copied to clipboard",
|
|
"source_copied": "Source copied to clipboard",
|
|
"error_sending": "Failed to send email",
|
|
"error_deleting": "Failed to delete email",
|
|
"error_loading": "Failed to load emails",
|
|
"new_email": "New email",
|
|
"new_email_from": "From {sender}",
|
|
"click_to_view": "Click to view",
|
|
"email_moved": "Email moved",
|
|
"emails_moved": "{count} emails moved",
|
|
"moved_to_mailbox": "Moved to {mailbox}",
|
|
"move_failed": "Move failed",
|
|
"move_error": "Could not move emails to the selected folder",
|
|
"identity_created": "Identity created successfully",
|
|
"identity_updated": "Identity updated successfully",
|
|
"identity_deleted": "Identity deleted",
|
|
"identity_create_failed": "Failed to create identity: {{error}}",
|
|
"identity_update_failed": "Failed to update identity: {{error}}",
|
|
"identity_delete_failed": "Failed to delete identity: {{error}}",
|
|
"identity_unauthorized": "You are not authorized to send from this email address",
|
|
"identity_not_found": "Identity not found",
|
|
"vacation_saved": "Vacation responder settings saved",
|
|
"vacation_save_failed": "Failed to save vacation responder settings"
|
|
},
|
|
"date": {
|
|
"today": "Today",
|
|
"yesterday": "Yesterday",
|
|
"this_week": "This week",
|
|
"last_week": "Last week",
|
|
"this_month": "This month",
|
|
"older": "Older",
|
|
"just_now": "Just now",
|
|
"minutes_ago": "{{count}} minute ago",
|
|
"minutes_ago_plural": "{{count}} minutes ago",
|
|
"hours_ago": "{{count}} hour ago",
|
|
"hours_ago_plural": "{{count}} hours ago",
|
|
"days_ago": "{{count}} day ago",
|
|
"days_ago_plural": "{{count}} days ago"
|
|
},
|
|
"language": {
|
|
"title": "Language",
|
|
"english": "English",
|
|
"french": "Français",
|
|
"japanese": "日本語",
|
|
"spanish": "Español",
|
|
"italian": "Italiano",
|
|
"german": "Deutsch",
|
|
"dutch": "Nederlands",
|
|
"portuguese": "Português",
|
|
"select_language": "Select language",
|
|
"switch_to_english": "Switch to English",
|
|
"switch_to_french": "Switch to French",
|
|
"switch_to_japanese": "Switch to Japanese",
|
|
"switch_to_spanish": "Switch to Spanish",
|
|
"switch_to_italian": "Switch to Italian",
|
|
"switch_to_german": "Switch to German",
|
|
"switch_to_dutch": "Switch to Dutch",
|
|
"switch_to_portuguese": "Switch to Portuguese",
|
|
"switching": "Changing language..."
|
|
},
|
|
"settings": {
|
|
"title": "Settings",
|
|
"back_to_mail": "Back to Mail",
|
|
"save_success": "Settings saved successfully",
|
|
"import_success": "Settings imported successfully",
|
|
"import_error": "Failed to import settings",
|
|
"reset_confirm": "Are you sure you want to reset all settings to defaults?",
|
|
"tabs": {
|
|
"appearance": "Appearance",
|
|
"language": "Language & Region",
|
|
"email": "Email Behavior",
|
|
"composer": "Composer",
|
|
"privacy": "Privacy & Security",
|
|
"account": "Account",
|
|
"identities": "Identities",
|
|
"vacation": "Vacation Responder",
|
|
"advanced": "Advanced"
|
|
},
|
|
"appearance": {
|
|
"title": "Appearance",
|
|
"description": "Customize the look and feel of your webmail",
|
|
"theme": {
|
|
"label": "Theme",
|
|
"description": "Choose your preferred color scheme",
|
|
"light": "Light",
|
|
"dark": "Dark",
|
|
"system": "System"
|
|
},
|
|
"language": {
|
|
"label": "Language",
|
|
"description": "Choose your preferred language"
|
|
},
|
|
"font_size": {
|
|
"label": "Font Size",
|
|
"description": "Adjust text size for better readability",
|
|
"small": "Small",
|
|
"medium": "Medium",
|
|
"large": "Large"
|
|
},
|
|
"list_density": {
|
|
"label": "List Density",
|
|
"description": "Control spacing in email lists",
|
|
"compact": "Compact",
|
|
"regular": "Regular",
|
|
"comfortable": "Comfortable"
|
|
},
|
|
"animations": {
|
|
"label": "Enable Animations",
|
|
"description": "Show smooth transitions and effects"
|
|
}
|
|
},
|
|
"language_region": {
|
|
"title": "Language & Region",
|
|
"description": "Configure language and regional preferences",
|
|
"language": {
|
|
"label": "Language",
|
|
"description": "Choose your preferred language",
|
|
"english": "English",
|
|
"french": "Français"
|
|
},
|
|
"date_format": {
|
|
"label": "Date Format",
|
|
"description": "How dates should be displayed",
|
|
"regional": "Regional",
|
|
"iso": "ISO 8601",
|
|
"custom": "Custom"
|
|
},
|
|
"time_format": {
|
|
"label": "Time Format",
|
|
"description": "Choose between 12-hour or 24-hour clock",
|
|
"12h": "12-hour",
|
|
"24h": "24-hour"
|
|
},
|
|
"first_day": {
|
|
"label": "First Day of Week",
|
|
"description": "Start week on Sunday or Monday",
|
|
"sunday": "Sunday",
|
|
"monday": "Monday"
|
|
}
|
|
},
|
|
"email_behavior": {
|
|
"title": "Email Behavior",
|
|
"description": "Configure how emails are handled",
|
|
"mark_read": {
|
|
"label": "Mark as Read",
|
|
"description": "When to mark emails as read when opened",
|
|
"instant": "Instantly",
|
|
"delay_3s": "After 3 seconds",
|
|
"delay_5s": "After 5 seconds",
|
|
"never": "Never"
|
|
},
|
|
"delete_action": {
|
|
"label": "Delete Action",
|
|
"description": "What happens when you delete an email",
|
|
"trash": "Move to Trash",
|
|
"permanent": "Delete Permanently"
|
|
},
|
|
"show_preview": {
|
|
"label": "Show Preview Text",
|
|
"description": "Display email preview in the list"
|
|
},
|
|
"emails_per_page": {
|
|
"label": "Emails Per Page",
|
|
"description": "Number of emails to load at once",
|
|
"25": "25 emails",
|
|
"50": "50 emails",
|
|
"100": "100 emails"
|
|
},
|
|
"external_content": {
|
|
"label": "External Content",
|
|
"description": "How to handle images and external content",
|
|
"ask": "Always ask",
|
|
"block": "Always block",
|
|
"allow": "Always allow"
|
|
},
|
|
"trusted_senders": {
|
|
"label": "Trusted Senders",
|
|
"description": "Manage senders whose images load automatically",
|
|
"count_zero": "None",
|
|
"count_one": "1 sender",
|
|
"count_other": "{count} senders",
|
|
"modal_title": "Trusted Senders",
|
|
"empty_title": "No trusted senders yet",
|
|
"empty_description": "When viewing an email with blocked images, click \"Always trust this sender\" to add them here.",
|
|
"add_manually": "Add sender manually",
|
|
"add_button": "Add",
|
|
"add_placeholder": "Enter email address",
|
|
"search_placeholder": "Search senders...",
|
|
"no_results": "No senders match your search",
|
|
"remove": "Remove",
|
|
"close": "Close",
|
|
"invalid_email": "Please enter a valid email address",
|
|
"already_added": "This sender is already trusted"
|
|
}
|
|
},
|
|
"composer": {
|
|
"title": "Composer",
|
|
"description": "Configure email composition settings",
|
|
"autosave": {
|
|
"label": "Auto-save Interval",
|
|
"description": "How often to save drafts automatically",
|
|
"30s": "Every 30 seconds",
|
|
"1m": "Every minute",
|
|
"2m": "Every 2 minutes",
|
|
"5m": "Every 5 minutes"
|
|
},
|
|
"send_confirmation": {
|
|
"label": "Send Confirmation",
|
|
"description": "Ask for confirmation before sending emails"
|
|
},
|
|
"default_reply": {
|
|
"label": "Default Reply Mode",
|
|
"description": "Default action when clicking reply",
|
|
"reply": "Reply",
|
|
"reply_all": "Reply All"
|
|
}
|
|
},
|
|
"privacy": {
|
|
"title": "Privacy & Security",
|
|
"description": "Manage your privacy and security settings",
|
|
"external_images": {
|
|
"label": "Block External Images",
|
|
"description": "Prevent tracking through external images"
|
|
},
|
|
"session_timeout": {
|
|
"label": "Session Timeout",
|
|
"description": "Automatically log out after inactivity",
|
|
"never": "Never",
|
|
"30m": "30 minutes",
|
|
"1h": "1 hour",
|
|
"4h": "4 hours"
|
|
},
|
|
"clear_cache": {
|
|
"label": "Clear Cache",
|
|
"description": "Remove cached data and temporary files",
|
|
"button": "Clear Cache",
|
|
"confirm": "Are you sure you want to clear the cache?",
|
|
"success": "Cache cleared successfully"
|
|
}
|
|
},
|
|
"account": {
|
|
"title": "Account",
|
|
"description": "View your account information",
|
|
"email": {
|
|
"label": "Email Address",
|
|
"value": "{{email}}"
|
|
},
|
|
"server": {
|
|
"label": "JMAP Server",
|
|
"value": "{{server}}"
|
|
},
|
|
"storage": {
|
|
"label": "Storage Usage",
|
|
"used": "{{used}} of {{total}} used",
|
|
"percentage": "{{percent}}% used"
|
|
},
|
|
"last_sync": {
|
|
"label": "Last Sync",
|
|
"value": "{{time}}"
|
|
}
|
|
},
|
|
"identities": {
|
|
"title": "Sending Identities",
|
|
"description": "Manage email addresses you can send from",
|
|
"identities_count": {
|
|
"label": "Your Identities",
|
|
"description": "Email addresses configured for sending",
|
|
"count_zero": "No identities",
|
|
"count_one": "1 identity",
|
|
"count_other": "{{count}} identities"
|
|
},
|
|
"manage": "Manage Identities",
|
|
"sub_addressing": {
|
|
"label": "Sub-Addressing",
|
|
"description": "Use tags like user+tag@domain.com to organize incoming mail",
|
|
"learn_more": "Learn More"
|
|
}
|
|
},
|
|
"vacation": {
|
|
"title": "Vacation Responder",
|
|
"description": "Automatically reply to incoming emails while you're away",
|
|
"loading": "Loading vacation settings...",
|
|
"not_supported": "Your mail server does not support vacation responses.",
|
|
"fetch_error": "Failed to load vacation settings. Please try again.",
|
|
"status": {
|
|
"label": "Vacation Responder",
|
|
"description": "Send an automatic reply to people who email you",
|
|
"active": "Active",
|
|
"inactive": "Inactive"
|
|
},
|
|
"date_range": {
|
|
"title": "Date Range",
|
|
"description": "Optionally limit the auto-reply to a specific period",
|
|
"start": "Start Date",
|
|
"start_description": "Leave empty for no start limit",
|
|
"end": "End Date",
|
|
"end_description": "Leave empty for no end limit"
|
|
},
|
|
"message": {
|
|
"title": "Auto-Reply Message",
|
|
"description": "The message that will be sent as a reply",
|
|
"subject_label": "Subject",
|
|
"subject_description": "Subject line of the auto-reply",
|
|
"subject_placeholder": "Out of Office",
|
|
"body_label": "Message Body",
|
|
"body_description": "Plain text message content",
|
|
"body_placeholder": "Thank you for your email. I am currently out of the office and will respond when I return."
|
|
},
|
|
"preview": {
|
|
"title": "Preview",
|
|
"show": "Show preview",
|
|
"hide": "Hide preview"
|
|
},
|
|
"save": "Save Changes",
|
|
"saving": "Saving...",
|
|
"warnings": {
|
|
"end_before_start": "End date must be after start date",
|
|
"start_in_past": "Start date is in the past",
|
|
"empty_body": "Message body is empty — recipients will receive a blank reply"
|
|
}
|
|
},
|
|
"advanced": {
|
|
"title": "Advanced",
|
|
"description": "Advanced options and developer settings",
|
|
"debug_mode": {
|
|
"label": "Debug Mode",
|
|
"description": "Enable detailed logging for troubleshooting"
|
|
},
|
|
"keyboard_shortcuts": {
|
|
"label": "Keyboard Shortcuts",
|
|
"description": "View available keyboard shortcuts",
|
|
"button": "View Shortcuts"
|
|
},
|
|
"reset_settings": {
|
|
"label": "Reset Settings",
|
|
"description": "Restore all settings to default values",
|
|
"button": "Reset to Defaults"
|
|
},
|
|
"export_settings": {
|
|
"label": "Export Settings",
|
|
"description": "Download your settings as JSON",
|
|
"button": "Export"
|
|
},
|
|
"import_settings": {
|
|
"label": "Import Settings",
|
|
"description": "Upload settings from JSON file",
|
|
"button": "Import"
|
|
}
|
|
}
|
|
},
|
|
"errors": {
|
|
"page_error_title": "Something went wrong",
|
|
"page_error_description": "We encountered an unexpected error. Please try again or return to the home page.",
|
|
"sidebar_error": "Unable to load mailboxes",
|
|
"email_list_error": "Unable to load emails",
|
|
"viewer_error_title": "Unable to display email",
|
|
"viewer_error_description": "There was a problem rendering this email. It may contain unsupported content.",
|
|
"composer_error": "Unable to load composer",
|
|
"settings_error_title": "Settings unavailable",
|
|
"settings_error_description": "Unable to load settings. Your preferences may not be saved.",
|
|
"try_again": "Try again",
|
|
"reload": "Reload",
|
|
"reload_emails": "Reload emails",
|
|
"reload_settings": "Reload settings",
|
|
"retry": "Retry",
|
|
"go_home": "Go to inbox"
|
|
},
|
|
"context_menu": {
|
|
"reply": "Reply",
|
|
"reply_all": "Reply All",
|
|
"forward": "Forward",
|
|
"mark_read": "Mark as Read",
|
|
"mark_unread": "Mark as Unread",
|
|
"star": "Star",
|
|
"unstar": "Unstar",
|
|
"move_to": "Move to...",
|
|
"archive": "Archive",
|
|
"delete": "Delete",
|
|
"mark_as_spam": "Report spam",
|
|
"not_spam": "Not spam",
|
|
"color_tag": "Color Tag",
|
|
"remove_color": "Remove Color",
|
|
"items_selected": "{{count}} emails selected"
|
|
},
|
|
"shortcuts": {
|
|
"title": "Keyboard Shortcuts",
|
|
"tip": "Press ? anytime to show this help",
|
|
"sections": {
|
|
"navigation": "Navigation",
|
|
"actions": "Email Actions",
|
|
"global": "Global",
|
|
"threads": "Threads"
|
|
},
|
|
"navigation": {
|
|
"next_email": "Next email",
|
|
"previous_email": "Previous email",
|
|
"open_email": "Open email",
|
|
"close_email": "Close / Deselect"
|
|
},
|
|
"actions": {
|
|
"reply": "Reply",
|
|
"reply_all": "Reply all",
|
|
"forward": "Forward",
|
|
"star": "Toggle star",
|
|
"archive": "Archive",
|
|
"delete": "Delete",
|
|
"mark_unread": "Mark as unread",
|
|
"mark_read": "Mark as read",
|
|
"toggle_spam": "Report spam / Not spam"
|
|
},
|
|
"global": {
|
|
"compose": "Compose new email",
|
|
"search": "Focus search",
|
|
"help": "Show shortcuts",
|
|
"refresh": "Refresh emails",
|
|
"select_all": "Select all"
|
|
},
|
|
"threads": {
|
|
"expand_collapse": "Expand/collapse thread"
|
|
}
|
|
},
|
|
"threads": {
|
|
"messages_one": "{count} message",
|
|
"messages_other": "{count} messages",
|
|
"expand": "Expand conversation",
|
|
"collapse": "Collapse conversation",
|
|
"loading": "Loading conversation...",
|
|
"mark_read": "Mark conversation as read",
|
|
"mark_unread": "Mark conversation as unread",
|
|
"archive": "Archive conversation",
|
|
"delete": "Delete conversation",
|
|
"star": "Star conversation",
|
|
"unstar": "Unstar conversation"
|
|
},
|
|
"identities": {
|
|
"modal_title": "Manage Sending Identities",
|
|
"create_new": "Create New Identity",
|
|
"edit_identity": "Edit Identity",
|
|
"delete_confirm": "Delete this identity? This cannot be undone.",
|
|
"cannot_delete": "This identity cannot be deleted",
|
|
"primary_identity": "Primary",
|
|
"no_identities": "No identities found",
|
|
"display": {
|
|
"reply_to": "Reply-To:",
|
|
"bcc": "BCC:",
|
|
"signature": "Signature:",
|
|
"preview": "Preview:"
|
|
},
|
|
"validation_errors": {
|
|
"invalid_emails": "Invalid emails: {emails}",
|
|
"unknown_error": "Unknown error"
|
|
},
|
|
"form": {
|
|
"name_label": "Display Name",
|
|
"name_placeholder": "e.g., Work Email, Personal",
|
|
"name_required": "Name is required",
|
|
"email_label": "Email Address",
|
|
"email_placeholder": "your.email@example.com",
|
|
"email_required": "Email is required",
|
|
"email_invalid": "Please enter a valid email address",
|
|
"email_immutable": "Email address cannot be changed after creation",
|
|
"reply_to_label": "Reply-To (optional)",
|
|
"reply_to_placeholder": "different@email.com",
|
|
"bcc_label": "Auto BCC (optional)",
|
|
"bcc_placeholder": "archive@email.com",
|
|
"text_signature_label": "Text Signature",
|
|
"html_signature_label": "HTML Signature",
|
|
"save": "Save Identity",
|
|
"cancel": "Cancel",
|
|
"creating": "Creating...",
|
|
"updating": "Updating..."
|
|
},
|
|
"sub_address": {
|
|
"button_tooltip": "Use sub-address",
|
|
"popover_title": "Add Sub-Address Tag",
|
|
"tag_input_placeholder": "Enter tag (e.g., shopping)",
|
|
"preview_label": "Preview:",
|
|
"recent_tags": "Recent Tags",
|
|
"suggested_tags": "Suggested",
|
|
"use_address": "Use This Address",
|
|
"invalid_tag": "Tag must be alphanumeric and dashes only",
|
|
"tag_too_long": "Tag must be 30 characters or less",
|
|
"help_text": "Emails sent to user+tag@domain.com will arrive in your inbox",
|
|
"validation": {
|
|
"empty": "Tag cannot be empty",
|
|
"too_long": "Tag must be {max} characters or less",
|
|
"invalid_chars": "Tag must contain only letters, numbers, and dashes"
|
|
}
|
|
},
|
|
"badge": {
|
|
"sent_via": "via",
|
|
"sub_address_tag": "Sent using sub-address: {tag}",
|
|
"identity_name": "Sent using identity: {name}",
|
|
"identity_short": "via {name}",
|
|
"subaddress_tag": "+{tag}"
|
|
}
|
|
},
|
|
"contacts": {
|
|
"title": "Contacts",
|
|
"search_placeholder": "Search contacts...",
|
|
"create_new": "New Contact",
|
|
"empty_state": "No contacts yet",
|
|
"empty_search": "No contacts match your search",
|
|
"delete_confirm": "Are you sure you want to delete this contact?",
|
|
"local_mode": "Contacts are stored locally (server does not support JMAP Contacts)",
|
|
"back_to_mail": "Back to mail",
|
|
"tabs": {
|
|
"all": "All",
|
|
"groups": "Groups"
|
|
},
|
|
"detail": {
|
|
"emails": "Email Addresses",
|
|
"phones": "Phone Numbers",
|
|
"organizations": "Organizations",
|
|
"addresses": "Addresses",
|
|
"notes": "Notes",
|
|
"no_contact_selected": "Select a contact to view details",
|
|
"created": "Created",
|
|
"updated": "Last updated"
|
|
},
|
|
"form": {
|
|
"create_title": "New Contact",
|
|
"edit_title": "Edit Contact",
|
|
"given_name": "First name",
|
|
"surname": "Last name",
|
|
"email": "Email",
|
|
"email_placeholder": "email@example.com",
|
|
"phone": "Phone",
|
|
"phone_placeholder": "+1 234 567 890",
|
|
"organization": "Organization",
|
|
"organization_placeholder": "Company name",
|
|
"note": "Notes",
|
|
"note_placeholder": "Add a note...",
|
|
"context_work": "Work",
|
|
"context_private": "Private",
|
|
"add_email": "Add email",
|
|
"add_phone": "Add phone",
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"creating": "Creating...",
|
|
"updating": "Updating...",
|
|
"name_required": "At least a first name or last name is required",
|
|
"email_invalid": "Please enter a valid email address",
|
|
"save_failed": "Failed to save contact"
|
|
},
|
|
"groups": {
|
|
"create": "New Group",
|
|
"edit": "Edit Group",
|
|
"empty": "No groups yet",
|
|
"delete_confirm": "Are you sure you want to delete this group?",
|
|
"name_label": "Group Name",
|
|
"name_placeholder": "e.g., Team, Family",
|
|
"name_required": "Group name is required",
|
|
"save_failed": "Failed to save group",
|
|
"members_label": "Members",
|
|
"search_members": "Search contacts to add...",
|
|
"no_members": "No members in this group",
|
|
"member_count": "{count, plural, =0 {No members} one {1 member} other {# members}}"
|
|
},
|
|
"import": {
|
|
"title": "Import Contacts",
|
|
"drop_hint": "Click to select a vCard file",
|
|
"file_types": ".vcf or .vcard files",
|
|
"no_contacts": "No contacts found in file",
|
|
"parse_error": "Failed to parse vCard file",
|
|
"found": "{count, plural, one {1 contact found} other {# contacts found}}",
|
|
"duplicate": "Duplicate",
|
|
"select_all": "Select all",
|
|
"deselect_all": "Deselect all",
|
|
"selected": "{count, plural, one {1 selected} other {# selected}}",
|
|
"import_button": "Import",
|
|
"importing": "Importing...",
|
|
"success": "{count, plural, one {1 contact imported} other {# contacts imported}}",
|
|
"failed": "Import failed",
|
|
"close": "Close",
|
|
"file_too_large": "File is too large (max 5 MB)"
|
|
},
|
|
"export": {
|
|
"title": "Export Contacts",
|
|
"success": "{count, plural, one {1 contact exported} other {# contacts exported}}"
|
|
},
|
|
"bulk": {
|
|
"selected": "{count, plural, one {1 selected} other {# selected}}",
|
|
"select_all": "Select all",
|
|
"delete": "Delete",
|
|
"delete_confirm": "Delete {count, plural, one {1 contact} other {# contacts}}?",
|
|
"deleted": "{count, plural, one {1 contact deleted} other {# contacts deleted}}",
|
|
"add_to_group": "Add to group",
|
|
"choose_group": "Choose a group",
|
|
"adding_contacts": "Adding {count, plural, one {1 contact} other {# contacts}}",
|
|
"added_to_group": "Contacts added to group",
|
|
"export": "Export",
|
|
"clear": "Clear selection"
|
|
},
|
|
"toast": {
|
|
"created": "Contact created",
|
|
"updated": "Contact updated",
|
|
"deleted": "Contact deleted",
|
|
"error_create": "Failed to create contact",
|
|
"error_update": "Failed to update contact",
|
|
"error_delete": "Failed to delete contact"
|
|
}
|
|
},
|
|
"advanced_search": {
|
|
"title": "Advanced Search",
|
|
"from": "From",
|
|
"from_placeholder": "Sender email or name",
|
|
"to": "To",
|
|
"to_placeholder": "Recipient email or name",
|
|
"subject": "Subject",
|
|
"subject_placeholder": "Subject contains...",
|
|
"body": "Body",
|
|
"has_attachment": "Attachments",
|
|
"date_after": "After",
|
|
"date_before": "Before",
|
|
"starred": "Starred",
|
|
"unread": "Unread",
|
|
"read": "Read",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"clear": "Clear",
|
|
"clear_all": "Clear all",
|
|
"filters_active": "{count} filter",
|
|
"filters_active_plural": "{count} filters",
|
|
"toggle_filters": "Filters"
|
|
}
|
|
}
|