Files
SRCmail/locales/en/common.json
T
Matthieu MALVACHEandMatthieu MALVACHE 5d273e2109 feat: expand internationalization and add identity management
This release significantly expands internationalization support and adds comprehensive identity management features.

Internationalization (i18n):
- Add 5 new languages: Spanish, Italian, German, Dutch, Portuguese
- Expand from 3 to 8 total supported languages
- Redesign language switcher for better scalability (dropdown UI)
- Complete translations for all features across all languages

Identity Management:
- Multiple sender identities with per-identity signatures
- Sub-addressing support (user+tag@domain.com)
- Context-aware tag suggestions for sub-addresses
- Identity badges in email viewer and list
- Full CRUD operations for managing identities

Newsletter Management:
- RFC 2369 List-Unsubscribe support (one-click unsubscribe)
- HTTP and mailto unsubscribe methods
- Security validation prevents XSS attacks
- Two-step confirmation with persistent dismissal

Security & Accessibility:
- Dark mode email readability (intelligent color transformation)
- WCAG 2.0 Level AA color contrast compliance
- Comprehensive XSS prevention with validation utilities
- Unit test coverage for security-critical code (57 validation tests)

Testing:
- Add unit tests for validation utilities
- Add unit tests for email sanitization
- Add unit tests for color transformation
- Full test coverage for XSS attack vectors
2026-01-08 22:15:32 +01:00

746 lines
24 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."
},
"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"
},
"sidebar": {
"close": "Close",
"compose": "Compose",
"search_placeholder": "Search mail...",
"storage": "Storage",
"sign_out": "Sign out",
"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"
},
"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"
},
"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",
"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"
}
},
"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}"
}
}
}