{
    "app": {
        "name": "Reticulum MeshChatX",
        "sync_messages": "Sync Messages",
        "compose": "Compose",
        "messages": "Messages",
        "nomad_network": "Nomad Network",
        "map": "Map",
        "archives": "Archives",
        "propagation_nodes": "Propagation Nodes",
        "network_visualiser": "Network Visualiser",
        "interfaces": "Interfaces",
        "tools": "Tools",
        "settings": "Settings",
        "identities": "Identities",
        "about": "About",
        "my_identity": "My Identity",
        "identity_hash": "Identity Hash",
        "lxmf_address": "LXMF Address",
        "announce": "Announce",
        "announce_now": "Announce Now",
        "last_announced": "Last announced: {time}",
        "last_announced_never": "Last announced: Never",
        "display_name_placeholder": "Display Name",
        "profile": "Profile",
        "manage_identity": "Manage your identity, transport participation and LXMF defaults.",
        "theme": "Theme",
        "theme_mode": "{mode} mode",
        "transport": "Transport",
        "enabled": "Enabled",
        "disabled": "Disabled",
        "propagation": "Propagation",
        "local_node_running": "Local node running",
        "client_only": "Client-only",
        "copy": "Copy",
        "appearance": "Appearance",
        "appearance_description": "Switch between light and dark presets anytime.",
        "light_theme": "Light Theme",
        "dark_theme": "Dark Theme",
        "live_preview": "Live preview updates instantly.",
        "realtime": "Realtime",
        "transport_mode": "Transport Mode",
        "transport_description": "Relay paths and traffic for nearby peers.",
        "enable_transport_mode": "Enable Transport Mode",
        "transport_toggle_description": "Route announces, respond to path requests and help your mesh stay online.",
        "requires_restart": "Requires restart after toggling.",
        "show_community_interfaces": "Show Community Interfaces",
        "community_interfaces_description": "Surface community-maintained presets while adding new interfaces.",
        "reliability": "Reliability",
        "messages_description": "Configure how MeshChat handles message delivery failures. Control automatic retry behavior, attachment retransmission, and fallback mechanisms to ensure reliable message delivery across the mesh network.",
        "auto_resend_title": "Auto resend when peer announces",
        "auto_resend_description": "Failed messages automatically retry once the destination broadcasts again.",
        "retry_attachments_title": "Allow retries with attachments",
        "retry_attachments_description": "Large payloads will also be retried (useful when both peers have high limits).",
        "auto_fallback_title": "Auto fall back to propagation node",
        "auto_fallback_description": "Failed direct deliveries are queued on your preferred propagation node.",
        "inbound_stamp_cost": "Inbound Message Stamp Cost",
        "inbound_stamp_description": "Require proof-of-work stamps for direct delivery messages sent to you. Higher values require more computational work from senders. Range: 1-254. Default: 8.",
        "browse_nodes": "Browse Nodes",
        "propagation_nodes_description": "Keep conversations flowing even when peers are offline.",
        "nodes_info_1": "Propagation nodes hold messages securely until recipients sync again.",
        "nodes_info_2": "Nodes peer with each other to distribute encrypted payloads.",
        "nodes_info_3": "Most nodes retain data ~30 days, then discard undelivered items.",
        "run_local_node": "Run a local propagation node",
        "run_local_node_description": "MeshChat will announce and maintain a node using this local destination hash.",
        "preferred_propagation_node": "Preferred Propagation Node",
        "preferred_node_placeholder": "Destination hash, e.g. a39610c89d18bb48c73e429582423c24",
        "fallback_node_description": "Messages fallback to this node whenever direct delivery fails.",
        "auto_sync_interval": "Auto Sync Interval",
        "last_synced": "Last synced {time} ago.",
        "last_synced_never": "Last synced: never.",
        "propagation_stamp_cost": "Propagation Node Stamp Cost",
        "propagation_stamp_description": "Require proof-of-work stamps for messages propagated through your node. Higher values require more computational work. Range: 13-254. Default: 16. **Note:** Changing this requires restarting the app.",
        "language": "Language",
        "select_language": "Select your preferred language.",
        "custom_fork_by": "Custom fork by",
        "open": "Open",
        "identity": "Identity",
        "lxmf_address_hash": "LXMF Address Hash",
        "propagation_node_status": "Propagation Node Status",
        "last_sync": "Last Sync: {time} ago",
        "last_sync_never": "Last Sync: never",
        "syncing": "Syncing...",
        "synced": "Synced",
        "not_synced": "Not Synced",
        "not_configured": "Not Configured",
        "toggle_source": "Toggle Source Code",
        "audio_calls": "Telephone",
        "calls": "Calls",
        "status": "Status",
        "active_call": "Active Call",
        "incoming": "Incoming",
        "outgoing": "Outgoing",
        "call": "Call",
        "calls_plural": "Calls",
        "hop": "hop",
        "hops_plural": "hops",
        "hung_up_waiting": "Hung up, waiting for call...",
        "view_incoming_calls": "View Incoming Calls",
        "hangup_all_calls": "Hangup all Calls",
        "clear_history": "Clear History",
        "no_active_calls": "No active calls",
        "incoming_call": "Incoming call...",
        "outgoing_call": "Outgoing call...",
        "call_active": "Active",
        "call_ended": "Ended",
        "propagation_node": "Propagation Node",
        "sync_now": "Sync Now"
    },
    "common": {
        "open": "Open",
        "cancel": "Cancel",
        "save": "Save",
        "block": "Block",
        "delete": "Delete",
        "edit": "Edit",
        "add": "Add",
        "sync": "Sync",
        "restart_app": "Restart App",
        "reveal": "Reveal",
        "refresh": "Refresh",
        "vacuum": "Vacuum",
        "auto_recover": "Auto Recover",
        "delete_confirm": "Are you sure you want to delete this? This cannot be undone."
    },
    "identities": {
        "title": "Identities",
        "manage": "Manage and switch between multiple Reticulum identities.",
        "new_identity": "New Identity",
        "generate_fresh": "Generate a fresh Reticulum identity.",
        "display_name": "Display Name",
        "display_name_hint": "e.g. Secret Agent",
        "current": "Current",
        "switch": "Switch to this identity",
        "delete": "Delete identity",
        "no_identities": "No identities found",
        "create_first": "Create a new identity to get started.",
        "switch_confirm": "Switch to identity \"{name}\"? The application will need to restart.",
        "delete_confirm": "Are you sure you want to delete identity \"{name}\"? This cannot be undone.",
        "switched": "Identity switched. The application will now restart to apply changes.",
        "created": "Identity created successfully",
        "deleted": "Identity deleted"
    },
    "about": {
        "title": "About",
        "version": "v{version}",
        "rns_version": "RNS {version}",
        "lxmf_version": "LXMF {version}",
        "python_version": "Python {version}",
        "config_path": "Config path",
        "database_path": "Database path",
        "database_size": "Database size",
        "database_health": "Database Health",
        "database_health_description": "Quick check, WAL tuning, and recovery tools for the MeshChatX database.",
        "running_checks": "Running checks...",
        "integrity": "Integrity",
        "journal_mode": "Journal mode",
        "wal_autocheckpoint": "WAL autocheckpoint",
        "page_size": "Page size",
        "pages_free": "Pages / Free",
        "free_space_estimate": "Free space estimate",
        "system_resources": "System Resources",
        "live": "Live",
        "memory_rss": "Memory (RSS)",
        "virtual_memory": "Virtual Memory",
        "network_stats": "Network Stats",
        "sent": "Sent",
        "received": "Received",
        "packets_sent": "Packets Sent",
        "packets_received": "Packets Received",
        "reticulum_stats": "Reticulum Stats",
        "total_paths": "Total Paths",
        "announces_per_second": "Announces / sec",
        "announces_per_minute": "Announces / min",
        "announces_per_hour": "Announces / hr",
        "download_activity": "Download Activity",
        "no_downloads_yet": "No downloads yet",
        "runtime_status": "Runtime Status",
        "shared_instance": "Shared Instance",
        "standalone_instance": "Standalone Instance",
        "transport_enabled": "Transport Enabled",
        "transport_disabled": "Transport Disabled",
        "identity_addresses": "Identity & Addresses",
        "telephone_address": "Telephone Address"
    },
    "interfaces": {
        "title": "Interfaces",
        "manage": "Manage",
        "description": "Search, filter and export your Reticulum adapters.",
        "add_interface": "Add Interface",
        "import": "Import",
        "export_all": "Export all",
        "search_placeholder": "Search by name, type, host...",
        "all": "All",
        "all_types": "All types",
        "no_interfaces_found": "No interfaces found",
        "no_interfaces_description": "Adjust your search or add a new interface.",
        "restart_required": "Restart required",
        "restart_description": "Reticulum MeshChat must be restarted for any interface changes to take effect.",
        "restart_now": "Restart now"
    },
    "map": {
        "title": "Map",
        "description": "Offline-capable map with MBTiles support.",
        "upload_mbtiles": "Upload MBTiles",
        "select_file": "Select MBTiles file",
        "offline_mode": "Offline Mode",
        "online_mode": "Online Mode",
        "attribution": "Attribution",
        "bounds": "Bounds",
        "center": "Center",
        "zoom": "Zoom",
        "uploading": "Uploading...",
        "upload_success": "Map uploaded successfully",
        "upload_failed": "Failed to upload map",
        "no_map_loaded": "No offline map loaded. Upload an .mbtiles file to enable offline mode.",
        "invalid_file": "Invalid MBTiles file. Only raster tiles are supported.",
        "default_view": "Default View",
        "set_as_default": "Set as Default View",
        "export_area": "Export Area",
        "export_instructions": "Drag on the map to select an area.",
        "min_zoom": "Min Zoom",
        "max_zoom": "Max Zoom",
        "tile_count": "Estimated Tiles",
        "start_export": "Start Export",
        "exporting": "Exporting Map...",
        "download_ready": "Export Complete",
        "download_now": "Download MBTiles",
        "caching_enabled": "Tile Caching",
        "clear_cache": "Clear Cache",
        "cache_cleared": "Tile cache cleared",
        "tile_server_url": "Tile Server URL",
        "tile_server_url_placeholder": "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
        "tile_server_url_hint": "Use {z}, {x}, {y} for zoom, column, row",
        "tile_server_saved": "Tile server URL saved",
        "nominatim_api_url": "Nominatim API URL",
        "nominatim_api_url_placeholder": "https://nominatim.openstreetmap.org",
        "nominatim_api_url_hint": "Base URL for Nominatim geocoding service",
        "nominatim_api_saved": "Nominatim API URL saved",
        "search_placeholder": "Search for a location...",
        "search_offline_error": "Search is only available in online mode",
        "search_connection_error": "Failed to connect to search service. Please check your internet connection.",
        "search_error": "Search error",
        "search_no_results": "No results found",
        "custom_tile_server_unavailable": "Custom tile server is not accessible in offline mode",
        "custom_nominatim_unavailable": "Custom Nominatim server is not accessible in offline mode",
        "onboarding_title": "Export to MBTiles!",
        "onboarding_text": "Use the export tool to download map areas as MBTiles files for offline use.",
        "onboarding_got_it": "Got it"
    },
    "interface": {
        "disable": "Disable",
        "enable": "Enable",
        "edit_interface": "Edit Interface",
        "export_interface": "Export Interface",
        "delete_interface": "Delete Interface",
        "listen": "Listen",
        "forward": "Forward",
        "port": "Port",
        "frequency": "Frequency",
        "bandwidth": "Bandwidth",
        "txpower": "TX Power",
        "spreading_factor": "SF",
        "coding_rate": "Coding Rate",
        "bitrate": "Bitrate",
        "tx": "TX",
        "rx": "RX",
        "noise": "Noise",
        "clients": "Clients"
    },
    "messages": {
        "title": "Messages",
        "conversations": "Conversations",
        "announces": "Announces",
        "search_placeholder": "Search {count} conversations...",
        "unread": "Unread",
        "failed": "Failed",
        "attachments": "Attachments",
        "no_messages_yet": "No messages yet",
        "loading_conversations": "Loading conversations...",
        "no_conversations": "No Conversations",
        "discover_peers": "Discover peers on the Announces tab",
        "no_search_results": "No Results Found",
        "try_another_search": "Try a different search term",
        "no_search_results_conversations": "Your search didn't match any conversations.",
        "search_placeholder_announces": "Search {count} recent announces...",
        "no_peers_discovered": "No Peers Discovered",
        "waiting_for_announce": "Waiting for someone to announce!",
        "no_search_results_peers": "Your search didn't match any Peers!",
        "direct": "Direct",
        "hops": "{count} hops",
        "hops_away": "{count} hops away",
        "snr": "SNR {snr}",
        "stamp_cost": "Stamp Cost {cost}",
        "pop_out_chat": "Pop out chat",
        "custom_display_name": "Custom Display Name",
        "send_placeholder": "Type a message...",
        "no_messages_in_conversation": "No messages in this conversation yet.",
        "say_hello": "Say hello!",
        "no_active_chat": "No Active Chat",
        "select_peer_or_enter_address": "Select a peer from the sidebar or enter an address below",
        "add_files": "Add Files",
        "location": "Location",
        "share_location": "Share Location",
        "request_location": "Request Location",
        "view_on_map": "View on Map",
        "request": "Request",
        "recording": "Recording: {duration}",
        "nomad_network_node": "Nomad Network Node",
        "toggle_source": "Toggle Source Code"
    },
    "nomadnet": {
        "remove_favourite": "Remove Favourite",
        "add_favourite": "Add Favourite",
        "page_archives": "Page Archives",
        "archive_current_version": "Archive Current Version",
        "no_archives_for_this_page": "No archives for this page",
        "viewing_archived_version_from": "Viewing archived version from {time}",
        "viewing_archived_version": "Viewing archived version",
        "load_live": "Load Live",
        "failed_to_load_page": "Failed to load page",
        "archived_version_available": "An archived version of this page is available.",
        "view_archive": "View Archive",
        "no_active_node": "No Active Node",
        "select_node_to_browse": "Select a Node to start browsing!",
        "open_nomadnet_url": "Open a Nomadnet URL",
        "unknown_node": "Unknown Node",
        "existing_download_in_progress": "An existing download is in progress. Please wait for it to finish before starting another download.",
        "favourites": "Favourites",
        "announces": "Announces",
        "search_favourites_placeholder": "Search {count} favourites...",
        "rename": "Rename",
        "remove": "Remove",
        "no_favourites": "No favourites",
        "add_nodes_from_announces": "Add nodes from the announces tab.",
        "search_announces": "Search announces",
        "announced_time_ago": "Announced {time} ago",
        "block_node": "Block Node",
        "no_announces_yet": "No announces yet",
        "listening_for_peers": "Listening for peers on the mesh.",
        "block_node_confirm": "Are you sure you want to block {name}? Their announces will be ignored and they won't appear in the announce stream.",
        "node_blocked_successfully": "Node blocked successfully",
        "failed_to_block_node": "Failed to block node",
        "rename_favourite": "Rename this favourite",
        "remove_favourite_confirm": "Are you sure you want to remove this favourite?",
        "enter_nomadnet_url": "Enter a Nomadnet URL",
        "archiving_page": "Archiving page...",
        "page_archived_successfully": "Page archived successfully.",
        "identify_confirm": "Are you sure you want to identify yourself to this NomadNetwork Node? The page will reload after your identity has been sent."
    },
    "forwarder": {
        "title": "LXMF Forwarder",
        "description": "Forward messages from one address to another, with transparent return routing.",
        "add_rule": "Add Forwarding Rule",
        "name": "Name",
        "name_placeholder": "Rule name (e.g. Home Node)...",
        "forward_to_hash": "Forward to Hash",
        "destination_placeholder": "Destination LXMF hash...",
        "source_filter": "Source Filter (Optional)",
        "source_filter_placeholder": "Only forward from this hash...",
        "add_button": "Add Rule",
        "active_rules": "Active Rules",
        "no_rules": "No forwarding rules configured.",
        "active": "Active",
        "disabled": "Disabled",
        "forwarding_to": "Forwarding to: {hash}",
        "source_filter_display": "Source filter: {hash}",
        "delete_confirm": "Are you sure you want to delete this rule?"
    },
    "archives": {
        "description": "Search and view archived Nomad Network pages",
        "search_placeholder": "Search content, hash or path...",
        "loading": "Loading archives...",
        "no_archives_found": "No archives found",
        "adjust_filters": "Try adjusting your search filters.",
        "browse_to_archive": "Archived pages will appear here once you browse Nomad Network sites.",
        "page": "Page",
        "pages": "Pages",
        "view": "View",
        "showing_range": "Showing {start} to {end} of {total} archives",
        "page_of": "Page {page} of {total_pages}"
    },
    "tools": {
        "utilities": "Utilities",
        "power_tools": "Power tools for operators",
        "diagnostics_description": "Diagnostics and firmware helpers ship with MeshChat so you can troubleshoot peers without leaving the console.",
        "ping": {
            "title": "Ping",
            "description": "Latency test for any LXMF destination hash with live status."
        },
        "rnprobe": {
            "title": "RNProbe",
            "description": "Probe destinations with custom packet sizes to test connectivity."
        },
        "rncp": {
            "title": "RNCP",
            "description": "Send and receive files over RNS with progress tracking."
        },
        "rnstatus": {
            "title": "RNStatus",
            "description": "View interface statistics and network status information."
        },
        "translator": {
            "title": "Translator",
            "description": "Translate text using LibreTranslate API or local Argos Translate."
        },
        "forwarder": {
            "title": "Forwarder",
            "description": "LXMF forwarding with return path routing."
        },
        "rnode_flasher": {
            "title": "RNode Flasher",
            "description": "Flash and update RNode adapters without touching the command line."
        }
    },
    "ping": {
        "title": "Ping Mesh Peers",
        "description": "Only {code} destinations respond to ping.",
        "destination_hash": "Destination Hash",
        "timeout_seconds": "Ping Timeout (seconds)",
        "start_ping": "Start Ping",
        "stop": "Stop",
        "clear_results": "Clear Results",
        "drop_path": "Drop Path",
        "status": "Status",
        "running": "Running",
        "idle": "Idle",
        "last_rtt": "Last RTT",
        "last_error": "Last Error",
        "console_output": "Console Output",
        "streaming_responses": "Streaming seq responses in real time",
        "no_pings_yet": "No pings yet. Start a run to collect RTT data.",
        "invalid_hash": "Invalid destination hash!",
        "timeout_must_be_number": "Timeout must be a number!"
    },
    "rncp": {
        "file_transfer": "File Transfer",
        "title": "RNCP - Reticulum Network Copy",
        "description": "Send and receive files over the Reticulum network using RNS resources.",
        "send_file": "Send File",
        "fetch_file": "Fetch File",
        "listen": "Listen",
        "destination_hash": "Destination Hash",
        "file_path": "File Path",
        "timeout_seconds": "Timeout (seconds)",
        "disable_compression": "Disable compression",
        "cancel": "Cancel",
        "progress": "Progress",
        "invalid_hash": "Invalid destination hash!",
        "provide_file_path": "Please provide a file path!",
        "file_sent_successfully": "File sent successfully. Transfer ID: {id}",
        "failed_to_send": "Failed to send file",
        "remote_file_path": "Remote File Path",
        "save_path_optional": "Save Path (optional)",
        "save_path_placeholder": "Leave empty for current directory",
        "allow_overwrite": "Allow overwrite",
        "provide_remote_file_path": "Please provide a remote file path!",
        "file_fetched_successfully": "File fetched successfully. Saved to: {path}",
        "failed_to_fetch": "Failed to fetch file",
        "allowed_hashes": "Allowed Identity Hashes (one per line)",
        "fetch_jail_path": "Fetch Jail Path (optional)",
        "allow_fetch": "Allow fetch",
        "start_listening": "Start Listening",
        "stop_listening": "Stop Listening",
        "listening_on": "Listening on:",
        "provide_allowed_hash": "Please provide at least one allowed identity hash!",
        "failed_to_start_listener": "Failed to start listener"
    },
    "rnprobe": {
        "network_diagnostics": "Network Diagnostics",
        "title": "RNProbe - Destination Probe",
        "description": "Probe destinations with custom packet sizes to test connectivity and measure RTT.",
        "destination_hash": "Destination Hash",
        "full_destination_name": "Full Destination Name",
        "probe_size_bytes": "Probe Size (bytes)",
        "number_of_probes": "Number of Probes",
        "wait_between_probes": "Wait Between Probes (seconds)",
        "start_probe": "Start Probe",
        "stop": "Stop",
        "clear_results": "Clear Results",
        "summary": "Summary",
        "sent": "Sent",
        "delivered": "Delivered",
        "timeouts": "Timeouts",
        "failed": "Failed",
        "probe_results": "Probe Results",
        "probe_responses_realtime": "Probe responses in real time",
        "no_probes_yet": "No probes yet. Start a probe to test connectivity.",
        "probe_number": "Probe #{number}",
        "bytes": "bytes",
        "hops": "Hops",
        "rtt": "RTT",
        "rssi": "RSSI",
        "snr": "SNR",
        "quality": "Quality",
        "timeout": "Timeout",
        "invalid_hash": "Invalid destination hash!",
        "provide_full_name": "Please provide a full destination name!",
        "failed_to_probe": "Failed to probe destination"
    },
    "rnstatus": {
        "network_diagnostics": "Network Diagnostics",
        "title": "RNStatus - Network Status",
        "description": "View interface statistics and network status information.",
        "refresh": "Refresh",
        "include_link_stats": "Include Link Stats",
        "sort_by": "Sort by:",
        "none": "None",
        "bitrate": "Bitrate",
        "rx_bytes": "RX Bytes",
        "tx_bytes": "TX Bytes",
        "total_traffic": "Total Traffic",
        "announces": "Announces",
        "active_links": "Active Links: {count}",
        "no_interfaces_found": "No interfaces found. Click refresh to load status.",
        "mode": "Mode",
        "rx_packets": "RX Packets",
        "tx_packets": "TX Packets",
        "clients": "Clients",
        "peers_reachable": "reachable",
        "noise_floor": "Noise Floor",
        "interference": "Interference",
        "cpu_load": "CPU Load",
        "cpu_temp": "CPU Temp",
        "memory_load": "Memory Load",
        "battery": "Battery",
        "network": "Network",
        "incoming_announces": "Incoming Announces",
        "outgoing_announces": "Outgoing Announces",
        "airtime": "Airtime",
        "channel_load": "Channel Load"
    },
    "translator": {
        "text_translation": "Text Translation",
        "title": "Translator",
        "description": "Translate text using LibreTranslate API or local Argos Translate.",
        "argos_translate": "Argos Translate",
        "libretranslate": "LibreTranslate",
        "api_server": "LibreTranslate API Server",
        "api_server_description": "Enter the base URL of your LibreTranslate server (e.g., http://localhost:5000)",
        "source_language": "Source Language",
        "auto_detect": "Auto-detect",
        "target_language": "Target Language",
        "select_target_language": "Select target language",
        "argos_not_detected": "Argos Translate not detected",
        "argos_not_detected_desc": "To use local translation, you must install the Argos Translate package using one of the following methods:",
        "method_pip_venv": "Method 1: pip (venv)",
        "method_pipx": "Method 2: pipx",
        "note_restart_required": "Note: After installation, you may need to restart the application and install language packages via the Argos Translate CLI.",
        "no_language_packages": "No language packages detected",
        "no_language_packages_desc": "Argos Translate is installed but no language packages are available. Install language packages using one of the following commands:",
        "install_all_languages": "Install all languages",
        "install_specific_pair": "Install specific language pair (example: English to German)",
        "after_install_note": "After installing language packages, click \"Refresh Languages\" to reload available languages.",
        "text_to_translate": "Text to Translate",
        "enter_text_placeholder": "Enter text to translate...",
        "translate": "Translate",
        "swap": "Swap",
        "clear": "Clear",
        "translation": "Translation",
        "source": "Source",
        "detected": "Detected",
        "available_languages": "Available Languages",
        "languages_loaded_from": "Languages are loaded from LibreTranslate API or Argos Translate packages.",
        "refresh_languages": "Refresh Languages",
        "failed_to_load_languages": "Failed to load languages. Make sure LibreTranslate is running or Argos Translate is installed.",
        "copied_to_clipboard": "Copied to clipboard"
    },
    "call": {
        "phone": "Phone",
        "voicemail": "Voicemail",
        "settings": "Settings",
        "unknown": "Unknown",
        "call_ended": "Call Ended",
        "call_declined": "Call Declined",
        "send_to_voicemail": "Send to Voicemail",
        "incoming_call": "Incoming Call...",
        "busy": "Busy...",
        "rejected": "Rejected...",
        "calling": "Calling...",
        "available": "Available...",
        "ringing": "Ringing...",
        "connecting": "Connecting...",
        "connected": "Connected",
        "accept": "Accept",
        "decline": "Decline",
        "hangup": "Hangup",
        "answer_call": "Answer Call",
        "decline_call": "Decline Call",
        "hangup_call": "Hangup Call",
        "mute_mic": "Mute Mic",
        "unmute_mic": "Unmute Mic",
        "mute_speaker": "Mute Speaker",
        "unmute_speaker": "Unmute Speaker",
        "telephone": "Telephone",
        "enter_identity_hash_to_call": "Enter an identity to call.",
        "identity_hash": "Identity Hash",
        "call_history": "Call History",
        "call_back": "Call Back",
        "no_voicemails": "No Voicemails",
        "voicemails_will_appear_here": "When people leave you messages, they'll show up here.",
        "voicemail_inbox": "Voicemail Inbox",
        "messages": "Messages",
        "delete": "Delete",
        "voicemail_settings": "Voicemail Settings",
        "dependencies_missing": "Dependencies Missing",
        "voicemail_requires_espeak": "Voicemail requires `espeak-ng` to generate greetings. Please install it on your system.",
        "voicemail_requires_ffmpeg": "Voicemail requires `ffmpeg` to process audio files. Please install it on your system.",
        "enable_voicemail": "Enable Voicemail",
        "enable_voicemail_description": "Accept calls automatically and record messages",
        "greeting_message": "Greeting Message",
        "enter_greeting_text": "Enter greeting text...",
        "greeting_text_description": "This text will be converted to speech using eSpeak NG.",
        "save_and_generate": "Save & Generate",
        "generating": "Generating...",
        "preview_greeting": "Preview Greeting",
        "stop_preview": "Stop Preview",
        "answer_delay_seconds": "Answer Delay (s)",
        "max_recording_seconds": "Max Recording (s)",
        "recording_voicemail": "Recording Voicemail",
        "call_status": "Call Status",
        "active_call": "Active Call",
        "status": "Status",
        "failed_to_answer_call": "Failed to answer call",
        "failed_to_hangup_call": "Failed to hangup call",
        "failed_to_toggle_microphone": "Failed to toggle microphone",
        "failed_to_toggle_speaker": "Failed to toggle speaker",
        "failed_to_switch_audio_profile": "Failed to switch audio profile",
        "failed_to_initiate_call": "Failed to initiate call",
        "enter_identity_hash_to_call_error": "Enter an identity to call",
        "failed_to_save_settings": "Failed to save settings",
        "do_not_disturb": "Do Not Disturb",
        "load_more": "Load More",
        "search_history": "Search history...",
        "settings_saved": "Settings saved",
        "greeting_generated_successfully": "Greeting generated successfully",
        "failed_to_generate_greeting": "Failed to generate greeting",
        "no_greeting_audio_found": "No greeting audio found. Please generate one first.",
        "voicemail_deleted": "Voicemail deleted",
        "failed_to_delete_voicemail": "Failed to delete voicemail",
        "ringtone": "Ringtone",
        "ringtone_settings": "Ringtone Settings",
        "enable_custom_ringtone": "Enable Custom Ringtone",
        "enable_custom_ringtone_description": "Play a custom audio file for all incoming calls",
        "upload_ringtone": "Upload Ringtone",
        "uploading_ringtone": "Uploading Ringtone...",
        "no_custom_ringtone_uploaded": "No custom ringtone uploaded",
        "supports_audio_formats": "Supports MP3, OGG, WAV, M4A, FLAC. Will be converted to Opus.",
        "preview_ringtone": "Preview Ringtone",
        "remove_ringtone": "Remove Ringtone",
        "ringtone_uploaded_successfully": "Ringtone uploaded successfully",
        "failed_to_upload_ringtone": "Failed to upload ringtone",
        "ringtone_deleted": "Ringtone deleted",
        "failed_to_delete_ringtone": "Failed to delete ringtone",
        "no_ringtone_audio_found": "No ringtone audio found. Please upload one first."
    }
}
