1453 lines
77 KiB
JSON
1453 lines
77 KiB
JSON
{
|
|
"bots": {
|
|
"title": "LXMFy Bots",
|
|
"description": "Manage automated bots for echo, notes, and reminders using LXMFy.",
|
|
"bot_framework": "Bot Framework",
|
|
"lxmfy_not_detected": "LXMFy not detected",
|
|
"lxmfy_not_detected_desc": "To use bots, you must install the LXMFy package:",
|
|
"install_via_pip": "Install via pip",
|
|
"create_new_bot": "Create New Bot",
|
|
"running_bots": "Running Bots",
|
|
"no_bots_running": "No bots are currently running.",
|
|
"select": "Select",
|
|
"start_bot": "Start Bot",
|
|
"stop_bot": "Stop Bot",
|
|
"restart_bot": "Restart Bot",
|
|
"saved_bots": "Saved Bots",
|
|
"bot_name": "Bot Name",
|
|
"cancel": "Cancel",
|
|
"bot_started": "Bot started successfully",
|
|
"bot_stopped": "Bot stopped",
|
|
"failed_to_start": "Failed to start bot",
|
|
"failed_to_stop": "Failed to stop bot",
|
|
"delete_bot": "Delete Bot",
|
|
"export_identity": "Export Identity",
|
|
"bot_deleted": "Bot deleted successfully",
|
|
"failed_to_delete": "Failed to delete bot",
|
|
"more_bots_coming": "More bots coming soon!"
|
|
},
|
|
"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",
|
|
"documentation": "Documentation",
|
|
"about": "About",
|
|
"changelog_title": "What's New",
|
|
"do_not_show_again": "Do not show again for this version",
|
|
"do_not_show_ever": "Do not show ever again",
|
|
"tutorial_title": "Getting Started",
|
|
"tutorial_welcome": "Welcome to MeshChatX",
|
|
"tutorial_connect": "Connect to the Mesh",
|
|
"tutorial_finish": "Ready to Roll!",
|
|
"tutorial_restart_required": "Restart Required",
|
|
"tutorial_docker_note": "If you're running in Docker, ensure you restart the container.",
|
|
"my_identity": "My Identity",
|
|
"identity_hash": "Identity Hash",
|
|
"lxmf_address": "LXMF Address",
|
|
"announce": "Announce",
|
|
"announce_now": "Announce Now",
|
|
"show_qr": "Show QR Code",
|
|
"failed_announce": "failed to announce",
|
|
"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...",
|
|
"syncing_node": "Syncing... ({state})",
|
|
"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",
|
|
"setting_auto_saved": "Setting {label} auto-saved",
|
|
"backup_max_count": "Automatic backup limit",
|
|
"message_font_size": "Message font size",
|
|
"message_icon_size": "Icon size",
|
|
"search_settings": "Search settings...",
|
|
"auto_resend": "Auto Resend",
|
|
"retry_attachments": "Retry Attachments",
|
|
"auto_fallback": "Auto Fallback",
|
|
"community_interfaces": "Community Interfaces",
|
|
"preferred_node": "Preferred Node",
|
|
"local_node": "Local Node",
|
|
"auto_sync": "Auto Sync",
|
|
"inbound_stamp_cost_label": "Inbound Stamp Cost",
|
|
"propagation_stamp_cost_label": "Propagation Stamp Cost",
|
|
"page_archiver": "Page Archiver",
|
|
"smart_crawler": "Smart Crawler",
|
|
"authentication": "Authentication",
|
|
"banishment": "Banishment",
|
|
"banishment_description": "Customize the visual effect shown for banished peers and nodes.",
|
|
"banished_effect_enabled": "Enable Banishment Effect",
|
|
"banished_effect_description": "Show a visual overlay on banished peers and nodes.",
|
|
"banished_text_label": "Banishment Text",
|
|
"banished_text_description": "Custom message to display on the overlay.",
|
|
"banished_color_label": "Banishment Color",
|
|
"banished_color_description": "The color used for the banishment effect.",
|
|
"desktop_open_calls_in_separate_window": "Open Calls in 2nd Window",
|
|
"desktop_open_calls_in_separate_window_description": "When a call is active, it will be shown in a separate pop-out window rather than inside the app.",
|
|
"desktop_hardware_acceleration_enabled": "Hardware Acceleration",
|
|
"desktop_hardware_acceleration_enabled_description": "Disable this if you experience UI flickering, black screens or graphical glitches.",
|
|
"translator": "Translator",
|
|
"translator_enabled": "Enable Translator",
|
|
"translator_description": "Enable translation features in conversations.",
|
|
"libretranslate_url": "LibreTranslate URL",
|
|
"libretranslate_url_description": "The URL where LibreTranslate API is accessible.",
|
|
"system": "System",
|
|
"reticulum_stack": "Reticulum Stack",
|
|
"reticulum_stack_description": "Manage the underlying Reticulum Network Stack.",
|
|
"reload_rns": "Reload RNS",
|
|
"reload_rns_description": "Deregister all destinations, stop the current RNS instance, and reload it. This is useful for applying configuration changes or restarting the mesh network stack without restarting the entire application.",
|
|
"reloading_rns": "Reloading RNS...",
|
|
"reloaded_rns": "Reticulum reloaded successfully",
|
|
"announce_interval": "Announce Interval",
|
|
"stop_sync_confirm": "Are you sure you want to stop syncing?",
|
|
"sync_error_generic": "Something went wrong. Try again later.",
|
|
"sync_complete": "Sync complete. {count} messages received.",
|
|
"sync_error": "Sync error: {status}",
|
|
"switching_identity": "Switching Identity...",
|
|
"loading_identity": "Loading your identity",
|
|
"emergency_mode_active": "Emergency Mode Active - Using in-memory database and restricted services.",
|
|
"blackhole_integration_enabled": "Blackhole Integration",
|
|
"blackhole_integration_description": "Automatically blackhole identities at the Reticulum transport layer when banishing users in MeshChatX."
|
|
},
|
|
"common": {
|
|
"open": "Open",
|
|
"close": "Close",
|
|
"cancel": "Cancel",
|
|
"save": "Save",
|
|
"block": "Banish",
|
|
"delete": "Delete",
|
|
"edit": "Edit",
|
|
"add": "Add",
|
|
"sync": "Sync",
|
|
"restart_app": "Restart App",
|
|
"reveal": "Reveal",
|
|
"refresh": "Refresh",
|
|
"copy": "Copy",
|
|
"copy_to_clipboard": "Copy to clipboard",
|
|
"vacuum": "Vacuum",
|
|
"auto_recover": "Auto Recover",
|
|
"shutdown": "Shutdown",
|
|
"acknowledge_reset": "Acknowledge & Reset",
|
|
"continue": "Continue",
|
|
"confirm": "Confirm",
|
|
"delete_confirm": "Are you sure you want to delete this? This cannot be undone.",
|
|
"search": "Search tools...",
|
|
"no_results": "No tools found",
|
|
"error": "Error",
|
|
"success": "Success",
|
|
"warning": "Warning",
|
|
"info": "Info",
|
|
"copied": "Copied to clipboard",
|
|
"failed_to_copy": "Failed to copy to clipboard",
|
|
"save_failed": "Failed to save configuration!",
|
|
"invalid_address": "Invalid Address",
|
|
"loading": "Loading...",
|
|
"ok": "OK"
|
|
},
|
|
"maintenance": {
|
|
"title": "Maintenance & Data",
|
|
"description": "Manage your local data, clear caches, and backup conversations.",
|
|
"clear_messages": "Clear All Messages",
|
|
"clear_messages_desc": "Permanently delete all sent and received messages.",
|
|
"clear_announces": "Clear All Announces",
|
|
"clear_announces_desc": "Remove all discovered peers and nodes from your cache.",
|
|
"clear_nomadnet_favs": "Clear NomadNetwork Favorites",
|
|
"clear_nomadnet_favs_desc": "Remove all saved NomadNetwork nodes from your favorites.",
|
|
"clear_lxmf_icons": "Clear LXMF Icons",
|
|
"clear_lxmf_icons_desc": "Remove cached LXMF user icons from your device.",
|
|
"clear_archives": "Clear Page Archives",
|
|
"clear_archives_desc": "Delete all cached NomadNetwork pages.",
|
|
"export_messages": "Export Messages",
|
|
"export_messages_desc": "Download all conversations as a JSON file.",
|
|
"import_messages": "Import Messages",
|
|
"import_messages_desc": "Restore conversations from a JSON file.",
|
|
"clear_confirm": "Are you sure? This action cannot be undone.",
|
|
"messages_cleared": "Messages cleared successfully",
|
|
"announces_cleared": "Announces cleared successfully",
|
|
"favourites_cleared": "Favorites cleared successfully",
|
|
"lxmf_icons_cleared": "LXMF icons cleared successfully",
|
|
"archives_cleared": "Archives cleared successfully",
|
|
"import_success": "Successfully imported {count} messages",
|
|
"import_failed": "Failed to import messages"
|
|
},
|
|
"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",
|
|
"failed_load": "Failed to load identities",
|
|
"enter_display_name_warning": "Please enter a display name",
|
|
"failed_create": "Failed to create identity",
|
|
"switch_scheduled": "Switch scheduled. Reloading application...",
|
|
"failed_switch": "Failed to switch identity",
|
|
"failed_delete": "Failed to delete identity"
|
|
},
|
|
"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",
|
|
"security_integrity": "Security Integrity",
|
|
"security_integrity_description": "System verification status for backend and data files",
|
|
"secured": "Secured",
|
|
"tampering_detected": "Tampering Detected",
|
|
"technical_issues": "Technical Issues:",
|
|
"integrity_backend_error": "The application backend binary (unpacked from ASAR) appears to have been modified or replaced. This could indicate a malicious actor trying to compromise your mesh communication.",
|
|
"integrity_data_error": "Your identities or database files appear to have been modified while the app was closed.",
|
|
"integrity_warning_footer": "Proceed with caution. If you did not manually update or modify these files, your installation may be compromised.",
|
|
"no_integrity_violations": "No integrity violations detected since last startup.",
|
|
"dependency_chain": "Dependency Chain",
|
|
"other_core_components": "Other Core Components",
|
|
"backend_dependencies": "Backend Dependencies",
|
|
"delete_snapshot_confirm": "Are you sure you want to delete this snapshot?",
|
|
"snapshot_deleted": "Snapshot deleted",
|
|
"failed_delete_snapshot": "Failed to delete snapshot",
|
|
"delete_backup_confirm": "Are you sure you want to delete this backup?",
|
|
"backup_deleted": "Backup deleted",
|
|
"failed_delete_backup": "Failed to delete backup",
|
|
"database_restored": "Database restored. Relaunching...",
|
|
"failed_restore_snapshot": "Failed to restore snapshot",
|
|
"restore_snapshot_confirm": "Are you sure you want to restore this snapshot? This will overwrite the current database and require an app relaunch.",
|
|
"integrity_acknowledged": "Integrity issues acknowledged",
|
|
"integrity_acknowledged_reset": "Integrity issues acknowledged and manifest reset",
|
|
"integrity_acknowledge_confirm": "Are you sure you want to acknowledge these integrity issues? This will update the security manifest to match the current state of your files.",
|
|
"failed_acknowledge_integrity": "Failed to acknowledge integrity issues",
|
|
"shutdown_sent": "Shutdown command sent to server.",
|
|
"identity_exported": "Identity key file exported",
|
|
"identity_copied": "Identity Base32 key copied to clipboard"
|
|
},
|
|
"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 MeshChatX must be restarted for any interface changes to take effect.",
|
|
"restart_now": "Restart now",
|
|
"failed_enable": "failed to enable interface",
|
|
"failed_disable": "failed to disable interface",
|
|
"delete_confirm": "Are you sure you want to delete this interface? This can not be undone!",
|
|
"failed_delete": "failed to delete interface",
|
|
"failed_export_all": "Failed to export interfaces",
|
|
"failed_export_single": "Failed to export interface",
|
|
"failed_reload": "Failed to reload Reticulum!",
|
|
"interface_not_found": "The selected interface for editing could not be found.",
|
|
"discovery_settings_saved": "Discovery settings saved",
|
|
"failed_save_discovery": "Failed to save discovery settings",
|
|
"no_interfaces_found_config": "No interfaces were found in the selected configuration file",
|
|
"failed_parse_config": "Failed to parse configuration file",
|
|
"select_config_file": "Please select a configuration file",
|
|
"select_at_least_one": "Please select at least one interface to import",
|
|
"import_success": "Interfaces imported successfully. MeshChat must be restarted for these changes to take effect.",
|
|
"failed_import_all": "Failed to import interfaces"
|
|
},
|
|
"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",
|
|
"tile_server_openstreetmap": "OpenStreetMap",
|
|
"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",
|
|
"tool_point": "Draw Point",
|
|
"tool_linestring": "Draw Line",
|
|
"tool_polygon": "Draw Polygon",
|
|
"tool_circle": "Draw Circle",
|
|
"tool_measure": "Measure Distance/Area",
|
|
"tool_clear": "Clear Drawings",
|
|
"save_drawing": "Save Drawing Layer",
|
|
"load_drawing": "Load Drawing Layer",
|
|
"save_drawing_title": "Save Drawing Layer",
|
|
"save_drawing_desc": "Save your current map annotations to the database.",
|
|
"drawing_name": "Layer Name",
|
|
"drawing_name_placeholder": "e.g., Target Area Alpha",
|
|
"load_drawing_title": "Load Drawing Layer",
|
|
"loading_drawings": "Loading saved layers...",
|
|
"no_drawings": "No Saved Layers",
|
|
"no_drawings_desc": "You haven't saved any map annotations yet.",
|
|
"saved_on": "Saved on",
|
|
"settings": "Map Settings",
|
|
"go_to_my_location": "Go to My Location",
|
|
"source_updated": "Map source updated",
|
|
"failed_set_active": "Failed to set active map",
|
|
"file_deleted": "File deleted",
|
|
"failed_delete_file": "Failed to delete file",
|
|
"storage_saved": "Storage directory saved",
|
|
"failed_save_storage": "Failed to save directory",
|
|
"export_cancelled": "Export cancelled",
|
|
"failed_cancel_export": "Failed to cancel export",
|
|
"failed_start_export": "Failed to start export",
|
|
"select_mbtiles_error": "Please select an .mbtiles file",
|
|
"view_saved": "Default view saved",
|
|
"failed_save_view": "Failed to save default view",
|
|
"failed_clear_cache": "Failed to clear cache",
|
|
"failed_save_tile_server": "Failed to save tile server URL",
|
|
"failed_save_nominatim": "Failed to save Nominatim API URL",
|
|
"copied_coordinates": "Copied coordinates",
|
|
"failed_load_drawings": "Failed to load drawings",
|
|
"not_initialized": "Map not initialized",
|
|
"drawing_saved": "Drawing saved",
|
|
"failed_save_drawing": "Failed to save drawing",
|
|
"deleted": "Deleted",
|
|
"failed_delete": "Failed to delete",
|
|
"location_not_determined": "Could not determine your location",
|
|
"geolocation_not_supported": "Geolocation is not supported by your browser",
|
|
"no_nodes_location": "No discovered nodes with location found",
|
|
"failed_fetch_nodes": "Failed to fetch discovered nodes for mapping"
|
|
},
|
|
"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",
|
|
"downloading": "Downloading",
|
|
"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",
|
|
"paste_from_clipboard": "Paste from Clipboard",
|
|
"location": "Location",
|
|
"share_location": "Share Location",
|
|
"request_location": "Request Location",
|
|
"view_on_map": "View on Map",
|
|
"request": "Request",
|
|
"generate_paper_message": "Generate Paper Message (LXM)",
|
|
"recording": "Recording: {duration}",
|
|
"nomad_network_node": "Nomad Network Node",
|
|
"toggle_source": "Toggle Source Code",
|
|
"folder_created": "Folder created",
|
|
"failed_create_folder": "Failed to create folder",
|
|
"folder_renamed": "Folder renamed",
|
|
"failed_rename_folder": "Failed to rename folder",
|
|
"folder_deleted": "Folder deleted",
|
|
"failed_delete_folder": "Failed to delete folder",
|
|
"moved_to_folder": "Moved to folder",
|
|
"failed_move_folder": "Failed to move to folder",
|
|
"marked_read": "Marked as read",
|
|
"failed_mark_read": "Failed to mark as read",
|
|
"conversations_deleted": "Conversations deleted",
|
|
"failed_delete_conversations": "Failed to delete conversations",
|
|
"failed_export_folders": "Failed to export folders",
|
|
"folders_imported": "Folders imported",
|
|
"failed_import_folders": "Failed to import folders",
|
|
"failed_read_clipboard": "Failed to read from clipboard",
|
|
"failed_send_ingest": "Failed to send ingest request",
|
|
"address_copied": "Your LXMF address copied to clipboard",
|
|
"hash_copied": "Identity hash copied to clipboard",
|
|
"failed_to_copy_hash": "Failed to copy identity hash",
|
|
"failed_copy_address": "Failed to copy address",
|
|
"translation_failed": "Translation failed",
|
|
"failed_add_contact": "Failed to add contact",
|
|
"ingesting_paper_message": "Ingesting paper message...",
|
|
"failed_ingest_paper": "Failed to ingest paper message",
|
|
"enter_display_name": "Enter a custom display name",
|
|
"failed_update_display_name": "Failed to update display name",
|
|
"failed_load_audio": "Failed to load audio attachment.",
|
|
"no_contacts_telephone": "No contacts found in telephone",
|
|
"failed_load_contacts": "Failed to load contacts",
|
|
"location_request_sent": "Location request sent",
|
|
"failed_send_location_request": "Failed to send location request",
|
|
"remove_image_confirm": "Are you sure you want to remove this image attachment?",
|
|
"failed_start_recording": "failed to start recording",
|
|
"remove_audio_confirm": "Are you sure you want to remove this audio attachment?",
|
|
"failed_generate_qr": "Failed to generate QR",
|
|
"enter_folder_name": "Enter folder name",
|
|
"new_folder": "New Folder",
|
|
"rename_folder": "Rename folder",
|
|
"failed_render_qr": "Failed to render QR code",
|
|
"uri_copied": "URI copied to clipboard",
|
|
"failed_copy_uri": "Failed to copy URI",
|
|
"paper_message_sent": "Paper message sent successfully",
|
|
"failed_send_paper": "Failed to send paper message",
|
|
"failed_load_config": "Failed to load configuration",
|
|
"profile_icon_saved": "Profile icon saved successfully",
|
|
"failed_save_profile_icon": "Failed to save profile icon",
|
|
"select_colors_warning": "Please select both background and icon colors",
|
|
"select_icon_warning": "Please select an icon",
|
|
"changes_reset": "Changes reset to saved values",
|
|
"profile_icon_removed": "Profile icon removed successfully",
|
|
"user_banished": "User banished successfully",
|
|
"failed_banish_user": "Failed to banish user",
|
|
"delete_conversation_confirm": "Are you sure you want to delete this conversation?",
|
|
"failed_delete_conversation": "failed to delete conversation",
|
|
"delete_history_confirm": "Are you sure you want to delete all messages in this conversation? This can not be undone!",
|
|
"failed_delete_history": "failed to delete history",
|
|
"invalid_destination_hash": "Invalid destination hash",
|
|
"invalid_destination_hash_format": "Invalid destination hash format",
|
|
"ping_failed": "Ping failed. Try again later",
|
|
"ping_reply_from": "Valid reply from {hash}",
|
|
"duration": "Duration: {duration}",
|
|
"hops_there": "Hops There: {count}",
|
|
"hops_back": "Hops Back: {count}",
|
|
"signal_quality": "Signal Quality: {quality}%",
|
|
"rssi_val": "RSSI: {rssi}dBm",
|
|
"snr_val": "SNR: {snr}dB"
|
|
},
|
|
"settings": {
|
|
"shortcut_saved": "Shortcut saved",
|
|
"shortcut_deleted": "Shortcut deleted",
|
|
"archived_pages_flushed": "Archived pages flushed.",
|
|
"failed_enable_transport": "Failed to enable transport mode!",
|
|
"failed_disable_transport": "Failed to disable transport mode!",
|
|
"failed_reload_reticulum": "Failed to reload Reticulum!",
|
|
"folders_exported": "Folders exported",
|
|
"failed_export_folders": "Failed to export folders",
|
|
"folders_imported": "Folders and mappings imported successfully",
|
|
"failed_import_folders": "Failed to import folders"
|
|
},
|
|
"debug": {
|
|
"title": "Debug Logs",
|
|
"description": "View application logs and detected anomalies.",
|
|
"failed_fetch_logs": "Failed to fetch logs",
|
|
"logs_copied": "Logs on this page copied to clipboard",
|
|
"failed_copy_logs": "Failed to copy logs"
|
|
},
|
|
"visualiser": {
|
|
"title": "Network Visualiser",
|
|
"description": "Visualize the mesh network topology.",
|
|
"reticulum_mesh": "Reticulum Mesh",
|
|
"network_visualizer": "Network Visualizer",
|
|
"node_info": "Node Info",
|
|
"hash": "Hash",
|
|
"hops": "Hops",
|
|
"interface": "Interface",
|
|
"rssi": "RSSI",
|
|
"snr": "SNR",
|
|
"first_seen": "First seen",
|
|
"last_seen": "Last seen",
|
|
"center_node": "Center on node",
|
|
"copy_hash": "Copy Hash",
|
|
"banish_identity": "Banish identity",
|
|
"banished_identities": "Banished identities",
|
|
"filter_nodes": "Filter nodes...",
|
|
"all": "All",
|
|
"direct": "Direct",
|
|
"one_hop": "1 Hop",
|
|
"multi_hops": "2+ Hops",
|
|
"clear": "Clear",
|
|
"show_labels": "Show all labels",
|
|
"bouncing_balls": "Bouncing balls mode",
|
|
"orbit_mode": "Orbit mode",
|
|
"show_edges": "Show edges",
|
|
"show_tooltips": "Show tooltips",
|
|
"show_rssi": "Show RSSI",
|
|
"show_snr": "Show SNR",
|
|
"show_hops": "Show Hops",
|
|
"physics": "Physics",
|
|
"gravity": "Gravity",
|
|
"spring_length": "Spring length",
|
|
"spring_strength": "Spring strength",
|
|
"damping": "Damping",
|
|
"central_gravity": "Central gravity",
|
|
"edge_strength": "Edge strength",
|
|
"force_atlas_2": "Force Atlas 2",
|
|
"barns_hut": "Barns Hut",
|
|
"repulsion": "Repulsion",
|
|
"reset_physics": "Reset physics",
|
|
"reset_camera": "Reset Camera",
|
|
"clear_graph": "Clear graph",
|
|
"total_nodes": "Total nodes",
|
|
"total_edges": "Total edges",
|
|
"discovered": "Discovered",
|
|
"wait_between_batches": "Wait between batches",
|
|
"batch": "Batch",
|
|
"loading_status": "Loading status",
|
|
"failed_load": "Failed to load network data"
|
|
},
|
|
"banishment": {
|
|
"title": "Banished",
|
|
"description": "Manage Banished users and nodes",
|
|
"failed_load_banished": "Failed to load banished destinations",
|
|
"search_placeholder": "Search by hash or display name...",
|
|
"loading_items": "Loading banished items...",
|
|
"no_items": "No banished items found",
|
|
"lift_banishment": "Lift Banishment",
|
|
"lift_banishment_confirm": "Are you sure you want to lift the banishment for {name}?",
|
|
"banished_at": "Banished at",
|
|
"banished_until": "Banished until",
|
|
"reason": "Reason",
|
|
"type": "Type",
|
|
"user": "User",
|
|
"node": "Node",
|
|
"banishment_lifted": "Banishment lifted successfully",
|
|
"failed_lift_banishment": "Failed to lift banishment"
|
|
},
|
|
"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...",
|
|
"search_placeholder_announces": "Search {count} recent announces...",
|
|
"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": "Banish Node",
|
|
"no_announces_yet": "No announces yet",
|
|
"no_search_results_peers": "No peers found matching your search.",
|
|
"listening_for_peers": "Listening for peers on the mesh.",
|
|
"block_node_confirm": "Are you sure you want to banish {name}? Their announces will be ignored and they won't appear in the announce stream.",
|
|
"node_blocked_successfully": "Node banished successfully",
|
|
"failed_to_block_node": "Failed to banish node",
|
|
"failed_rename_favourite": "Failed to rename favourite",
|
|
"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.",
|
|
"banishment_lifted": "Banishment lifted successfully",
|
|
"failed_lift_banishment": "Failed to lift banishment",
|
|
"enter_section_name": "Enter section name",
|
|
"new_section": "New Section",
|
|
"rename_section": "Rename section",
|
|
"delete_section_confirm": "Delete this section? Favourites will move to the main section.",
|
|
"unsupported_url": "unsupported url: "
|
|
},
|
|
"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}"
|
|
},
|
|
"docs": {
|
|
"title": "Documentation",
|
|
"subtitle": "Reticulum manuals and guides.",
|
|
"status_title": "Documentation Status",
|
|
"status_downloading": "Downloading...",
|
|
"status_available": "Offline Manual Available",
|
|
"status_not_downloaded": "Not Downloaded",
|
|
"btn_download": "Download Manuals",
|
|
"btn_update": "Update Manual",
|
|
"error": "Error",
|
|
"failed_update_docs": "Failed to update documentation sources",
|
|
"docs_link_copied": "Documentation link copied to clipboard",
|
|
"failed_copy_link": "Failed to copy link"
|
|
},
|
|
"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."
|
|
},
|
|
"rnpath": {
|
|
"title": "RNPath",
|
|
"description": "Manage the path table, view announce rates and request paths.",
|
|
"failed_fetch": "Failed to fetch path data",
|
|
"path_dropped": "Path dropped",
|
|
"failed_drop": "Could not drop path",
|
|
"error_drop": "Error dropping path",
|
|
"failed_request": "Failed to request path",
|
|
"paths_dropped": "Paths dropped",
|
|
"failed_drop_paths": "Failed to drop paths",
|
|
"purge_confirm": "Purge all announce queues? This cannot be undone.",
|
|
"queues_purged": "Announce queues purged",
|
|
"failed_purge": "Failed to purge queues"
|
|
},
|
|
"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.",
|
|
"select_device": "1. Select your device",
|
|
"product": "Product",
|
|
"model": "Model",
|
|
"select_product": "Select a Product",
|
|
"select_model": "Select a Model",
|
|
"enter_dfu_mode": "Enter DFU Mode",
|
|
"entering_dfu_mode": "Entering DFU Mode...",
|
|
"find_device_issue": "Can't find your device? Open an issue on",
|
|
"select_firmware": "2. Select firmware to flash (.zip)",
|
|
"flash_now": "Flash Now",
|
|
"flashing": "Flashing: {percentage}%",
|
|
"flashing_file_progress": "File {current}/{total}: {percentage}%",
|
|
"connecting_device": "Connecting to device...",
|
|
"download_firmware": "Download Firmware",
|
|
"official_firmware": "Official Firmware",
|
|
"ce_firmware": "CE Firmware",
|
|
"transport_node_firmware": "Transport Node Firmware",
|
|
"common_issues": "Common Issues",
|
|
"hardware_failure": "Hardware Failure:",
|
|
"provision_eeprom_hint": "You need to provision the eeprom in step 3.",
|
|
"firmware_corrupt": "Firmware Corrupt:",
|
|
"set_firmware_hash_hint": "You need to set the firmware hash in step 4.",
|
|
"step_provision": "3. Provision EEPROM",
|
|
"provision_description": "Sets device info, checksum and blank signature",
|
|
"provision": "Provision",
|
|
"provisioning_wait": "Provisioning: please wait...",
|
|
"step_set_hash": "4. Set Firmware Hash",
|
|
"set_hash_description": "Uses hash from board",
|
|
"set_firmware_hash": "Set Firmware Hash",
|
|
"setting_hash_wait": "Setting Firmware Hash: please wait...",
|
|
"step_done": "5. Finalize",
|
|
"download_recommended": "Download & Load Recommended Firmware",
|
|
"downloading": "Downloading...",
|
|
"done_description": "If you made it this far, and all previous steps were successful, your RNode should be ready to use.",
|
|
"meshchat_usage": "To use RNode with MeshChat, you will need to add an RNodeInterface in the Interfaces → Add Interface page.",
|
|
"sideband_usage": "To use RNode with Sideband, you will need to configure it in Hardware → RNode and enable Connectivity → Connect via RNode.",
|
|
"restart_warning": "You must restart MeshChat and Sideband for interface setting changes to take effect, otherwise nothing will happen!",
|
|
"advanced_tools": "Advanced Tools",
|
|
"detect_rnode": "Detect RNode",
|
|
"reboot_rnode": "Reboot RNode",
|
|
"read_display": "Read Display",
|
|
"dump_eeprom": "Dump EEPROM",
|
|
"wipe_eeprom": "Wipe EEPROM",
|
|
"eeprom_console_hint": "EEPROM dumps are shown in dev tools console.",
|
|
"configure_bluetooth": "Configure Bluetooth (optional)",
|
|
"bluetooth_info_1": "Bluetooth is not supported on all devices.",
|
|
"bluetooth_info_2": "Some devices use Bluetooth Classic, and some use BLE (Bluetooth Low Energy)",
|
|
"bluetooth_info_3": "Put the RNode into Bluetooth Pairing mode, then connect to it from Android Bluetooth settings.",
|
|
"bluetooth_info_4": "Once you have initiated a pair request from Android, a PIN should show on the RNode display.",
|
|
"bluetooth_info_5": "In Sideband you will need to enable Connect using Bluetooth in Hardware → RNode.",
|
|
"bluetooth_info_6": "If your device uses BLE you will also need to enable Device requires BLE in Hardware → RNode.",
|
|
"bluetooth_restart_warning": "Don't forget to restart Sideband for the setting changes to take effect!",
|
|
"enable": "Enable",
|
|
"disable": "Disable",
|
|
"start_pairing": "Start Pairing",
|
|
"configure_tnc": "Configure TNC Mode (optional)",
|
|
"tnc_info_1": "TNC mode allows an RNode to be used as a KISS compatible TNC over the Serial Port.",
|
|
"tnc_info_2": "This mode makes it usable with amateur radio software that can talk to a KISS TNC over a serial port.",
|
|
"tnc_warning": "You must leave TNC mode disabled when using RNode with apps like MeshChat or Sideband.",
|
|
"frequency": "Frequency (Hz)",
|
|
"bandwidth": "Bandwidth",
|
|
"tx_power": "Tx Power (dBm)",
|
|
"spreading_factor": "Spreading Factor",
|
|
"coding_rate": "Coding Rate",
|
|
"configure_display": "Configure Display",
|
|
"rotation": "Rotation",
|
|
"reconditioning": "Reconditioning",
|
|
"start": "Start",
|
|
"stop": "Stop",
|
|
"rotation_v180_warning": "Setting display rotation requires firmware v1.80+",
|
|
"errors": {
|
|
"failed_download": "Failed to download firmware: {error}",
|
|
"firmware_not_found_in_release": "Recommended firmware not found in the latest release.",
|
|
"web_serial_not_supported": "Web Serial is not supported in this browser. Please use Chrome, Edge, or another Chromium-based browser.",
|
|
"no_device_selected": "No device selected. Please select a serial port.",
|
|
"failed_connect": "Failed to connect to device: {error}",
|
|
"not_an_rnode": "Selected device is not an RNode! Please make sure you've selected the correct serial port.",
|
|
"failed_dfu": "Failed to enter DFU mode: {error}",
|
|
"select_firmware_first": "Please select a firmware file (.zip) first.",
|
|
"failed_flash": "Firmware flashing failed: {error}",
|
|
"esptool_not_loaded": "esptool-js could not be loaded. Please refresh the page and try again.",
|
|
"no_flash_config": "Flash configuration is not available for the selected device. Please select a different device or check the firmware file.",
|
|
"failed_extract": "Required file \"{file}\" not found in firmware ZIP file. Please download the correct firmware for your device.",
|
|
"failed_detect": "Failed to detect RNode. Make sure the device is connected and in the correct mode.",
|
|
"provisioned_already": "Eeprom is already provisioned. You must wipe it to reprovision!",
|
|
"select_product_first": "Please select a product!",
|
|
"select_model_first": "Please select a model!",
|
|
"not_provisioned": "Eeprom is not provisioned. You must do this first!",
|
|
"failed_provision": "failed to provision: {error}",
|
|
"failed_set_hash": "failed to set firmware hash: {error}",
|
|
"failed_reboot": "Failed to reboot RNode: {error}",
|
|
"failed_read_display": "Failed to read display: {error}",
|
|
"failed_dump_eeprom": "Failed to dump EEPROM: {error}",
|
|
"failed_wipe_eeprom": "Failed to wipe EEPROM: {error}",
|
|
"failed_enable_tnc": "Failed to enable TNC mode: {error}",
|
|
"failed_disable_tnc": "Failed to disable TNC mode: {error}",
|
|
"failed_enable_bluetooth": "Failed to enable Bluetooth: {error}",
|
|
"failed_disable_bluetooth": "Failed to disable Bluetooth: {error}",
|
|
"failed_start_pairing": "Failed to start pairing: {error}",
|
|
"failed_set_rotation": "Failed to set display rotation: {error}",
|
|
"failed_start_reconditioning": "Failed to start display reconditioning: {error}"
|
|
},
|
|
"alerts": {
|
|
"firmware_downloaded": "Recommended firmware has been downloaded and loaded.",
|
|
"dfu_ready": "Device should now be in DFU mode. You can now proceed with flashing firmware.",
|
|
"flash_success": "Firmware has been flashed successfully!",
|
|
"rebooting": "Board is rebooting!",
|
|
"eeprom_wipe_confirm": "Are you sure you want to wipe the eeprom on this device? This will take about 30 seconds. An alert will show when the eeprom wipe has finished.",
|
|
"eeprom_wiped": "eeprom has been wiped!",
|
|
"eeprom_dumped": "EEPROM dumped to console",
|
|
"rnode_detected": "RNode v{version} detected",
|
|
"provision_success": "device has been provisioned!",
|
|
"hash_success": "firmware hash has been set!",
|
|
"tnc_enabled": "TNC mode has been enabled!",
|
|
"tnc_disabled": "TNC mode has been disabled!",
|
|
"bluetooth_enabled": "Bluetooth has been enabled!",
|
|
"bluetooth_disabled": "Bluetooth has been disabled!",
|
|
"bluetooth_pairing_pin": "Bluetooth Pairing Pin: {pin}",
|
|
"bluetooth_pairing_started": "Pairing mode started (30s)",
|
|
"rotation_updated": "Rotation updated",
|
|
"reconditioning_started": "Reconditioning started"
|
|
}
|
|
},
|
|
"micron_editor": {
|
|
"title": "Micron Editor",
|
|
"description": "Edit and preview Micron markup with live rendering.",
|
|
"editor": "Editor",
|
|
"preview": "Preview",
|
|
"download": "Download",
|
|
"edit": "Edit",
|
|
"view_preview": "View Preview",
|
|
"placeholder": "Enter your Micron markup here...",
|
|
"reset": "Reset",
|
|
"new_tab": "New Tab",
|
|
"rename_tab": "Rename Tab",
|
|
"confirm_reset": "Are you sure you want to reset the editor? All your tabs and content will be lost.",
|
|
"confirm_delete_tab": "Are you sure you want to delete this tab?",
|
|
"main_tab": "Main",
|
|
"guide_tab": "NomadNet Guide",
|
|
"parser_by": "Using Micron Parser by"
|
|
},
|
|
"paper_message": {
|
|
"title": "Paper Message",
|
|
"description": "Generate and read LXMF signed paper messages via QR codes."
|
|
},
|
|
"rns_page_node": {
|
|
"title": "RNS Page Node",
|
|
"description": "Host Nomadnet micron pages and share files with ease."
|
|
},
|
|
"rns_tunnel": {
|
|
"title": "RNS Tunnel",
|
|
"description": "Tunnel regular IP traffic over Reticulum network links."
|
|
},
|
|
"rns_filesync": {
|
|
"title": "RNS Filesync",
|
|
"description": "Efficiently share and sync files with other mesh peers."
|
|
},
|
|
"bots": {
|
|
"title": "LXMFy Bots",
|
|
"description": "Manage automated bots for echo, notes, and reminders using LXMFy."
|
|
}
|
|
},
|
|
"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. This tool allows for reliable file transfer between mesh nodes even over high-latency links.",
|
|
"usage_steps": "How to use RNCP:",
|
|
"step_1": "1. To **receive** a file, go to the **Listen** tab, enter allowed identity hashes (who can send to you), and click **Start Listening**.",
|
|
"step_2": "2. To **send** a file, get the **Destination Hash** of a listening node, enter the **Local File Path**, and click **Send File**.",
|
|
"step_3": "3. To **fetch** a file, get the **Destination Hash** of a node listening with 'Allow Fetch' enabled, enter the **Remote File Path**, and click **Fetch File**.",
|
|
"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_load_languages": "Failed to load languages. Make sure LibreTranslate is running or Argos Translate is installed.",
|
|
"failed_translate": "Translation failed. Make sure LibreTranslate is running or Argos Translate is installed.",
|
|
"select_languages_warning": "Please select both source and target languages.",
|
|
"auto_detect_not_supported": "Auto-detection is not supported with Argos Translate. Please select a source language.",
|
|
"copied_to_clipboard": "Copied to clipboard"
|
|
},
|
|
"call": {
|
|
"phone": "Phone",
|
|
"voicemail": "Voicemail",
|
|
"settings": "Settings",
|
|
"unknown": "Unknown",
|
|
"call_ended": "Call Ended",
|
|
"call_declined": "Call Declined",
|
|
"initiation": "Initiating...",
|
|
"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.",
|
|
"tts_speed": "TTS Speed",
|
|
"tts_pitch": "TTS Pitch",
|
|
"tts_voice": "TTS Voice",
|
|
"tts_word_gap": "TTS Word Gap",
|
|
"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",
|
|
"call_recording": "Call Recorder",
|
|
"call_recording_description": "Record voice calls to storage",
|
|
"recordings": "Recordings",
|
|
"no_recordings": "No recordings found",
|
|
"remote_rx": "Remote (RX)",
|
|
"local_tx": "Local (TX)",
|
|
"download_rx": "Download RX",
|
|
"download_tx": "Download TX",
|
|
"default_quality": "Default Quality",
|
|
"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",
|
|
"go_to_phone_page": "Go to Phone Page",
|
|
"search_history": "Search history...",
|
|
"allow_calls_from_contacts_only": "Only allow calls from contacts",
|
|
"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.",
|
|
"ringtone_volume": "Ringtone Volume",
|
|
"default_ringtone": "Default Ringtone",
|
|
"ringtone_for_non_contacts": "Ringtone for callers not in your contacts",
|
|
"primary_system_default": "Primary (System Default)",
|
|
"random": "Random",
|
|
"edit_contact": "Edit Contact",
|
|
"add_contact": "Add Contact",
|
|
"contact_name": "Contact Name",
|
|
"preferred_ringtone": "Preferred Ringtone",
|
|
"default_global_setting": "Default (Global Setting)",
|
|
"uploaded_ringtones": "Uploaded Ringtones",
|
|
"save_contact": "Save Contact",
|
|
"primary_ringtone_set": "Primary ringtone set",
|
|
"failed_to_set_primary_ringtone": "Failed to set primary ringtone",
|
|
"failed_to_update_ringtone_name": "Failed to update ringtone name",
|
|
"failed_to_play_ringtone": "Failed to play ringtone",
|
|
"failed_to_play_voicemail": "Failed to play voicemail",
|
|
"web_audio_not_available": "Web audio not available",
|
|
"no_audio_input_found": "No input audio device found. Check microphone and permissions.",
|
|
"microphone_permission_denied": "Microphone permission denied. Allow access and try again.",
|
|
"failed_to_update_dnd": "Failed to update Do Not Disturb status",
|
|
"failed_to_update_call_settings": "Failed to update call settings",
|
|
"failed_to_update_recording_status": "Failed to update call recording status",
|
|
"call_history_cleared": "Call history cleared",
|
|
"failed_to_clear_call_history": "Failed to clear call history",
|
|
"identity_banished": "Identity banished",
|
|
"failed_to_banish_identity": "Failed to banish identity",
|
|
"name_and_hash_required": "Name and identity hash required",
|
|
"contact_updated": "Contact updated",
|
|
"contact_added": "Contact added",
|
|
"contact_deleted": "Contact deleted",
|
|
"failed_to_delete_contact": "Failed to delete contact",
|
|
"hash_copied": "Hash copied to clipboard",
|
|
"failed_to_copy_hash": "Failed to copy hash",
|
|
"greeting_uploaded_successfully": "Greeting uploaded successfully",
|
|
"greeting_deleted": "Greeting deleted",
|
|
"failed_to_delete_greeting": "Failed to delete greeting",
|
|
"failed_to_start_recording_greeting": "Failed to start recording greeting",
|
|
"greeting_recorded_from_mic": "Greeting recorded from mic",
|
|
"failed_to_stop_recording_greeting": "Failed to stop recording greeting",
|
|
"failed_to_load_recording": "Failed to load recording audio",
|
|
"recording_deleted": "Recording deleted",
|
|
"failed_to_delete_recording": "Failed to delete recording",
|
|
"call_sent_to_voicemail": "Call sent to voicemail",
|
|
"failed_to_send_to_voicemail": "Failed to send call to voicemail",
|
|
"failed_load_audio_edit": "Failed to load audio for editing",
|
|
"ringtone_saved": "Ringtone saved successfully",
|
|
"failed_save_ringtone": "Failed to save edited ringtone"
|
|
},
|
|
"tutorial": {
|
|
"title": "Getting Started",
|
|
"welcome": "Welcome to",
|
|
"welcome_desc": "The future of off-grid communication. Secure, decentralized, and unstoppable.",
|
|
"security": "Security & Performance",
|
|
"security_desc": "Massive improvements in speed, security, and crash recovery.",
|
|
"security_desc_page": "Massive improvements in speed, security, and integrity with built-in crash recovery.",
|
|
"maps": "Maps",
|
|
"maps_desc": "OpenLayers w/ MBTiles support (export and offline support) and custom API endpoints.",
|
|
"maps_desc_page": "OpenLayers support with offline MBTiles (export and offline support) and custom API endpoints for online maps.",
|
|
"voice": "Full LXST Voice",
|
|
"voice_desc": "Voicemail, ringtones, phonebook, and contact sharing.",
|
|
"voice_desc_page": "Crystal clear voice calls over mesh. Voicemail, custom ringtones, and phonebook discovery.",
|
|
"tools": "Advanced Tools",
|
|
"tools_desc": "Micron Editor, NomadNet, RNS tools, Docs.",
|
|
"tools_desc_page": "Micron editor, NomadNet nodes, RNS tools, and integrated documentation.",
|
|
"archiver": "Archiver",
|
|
"archiver_desc": "Manual and Automated page archiving.",
|
|
"archiver_desc_page": "Manual and Automated page archiving tools for offline browsing.",
|
|
"banishment": "Banishment",
|
|
"banishment_desc": "Banish annoying people, nodes and support for RNS blackhole level dropping their announces",
|
|
"palette": "Command Palette + Keybindings",
|
|
"palette_desc": "Navigate everything instantly and customize shortcuts.",
|
|
"palette_desc_page": "Navigate the entire application and customize your workflow with instant shortcuts.",
|
|
"i18n": "i18n Support",
|
|
"i18n_desc": "Available in English, German, and Russian.",
|
|
"i18n_desc_page": "Full internationalization support for English, German, and Russian languages.",
|
|
"more_features": "+ many more features!",
|
|
"connect": "Connect to the Mesh",
|
|
"connect_desc": "To send messages, you need to connect to a Reticulum interface.",
|
|
"connect_desc_page": "Use one of the public networks below or add a custom interface from the Interfaces page.",
|
|
"suggested_networks": "Suggested Public Networks",
|
|
"suggested_relays": "Suggested Relays",
|
|
"use": "Use",
|
|
"online": "Online",
|
|
"custom_interfaces": "Custom Interfaces",
|
|
"custom_interfaces_desc": "Want to add a bespoke interface? Head to the Interfaces page to configure a custom connection.",
|
|
"custom_interfaces_desc_page": "For any private relays or hardware you manage yourself, add them through the dedicated Interfaces page.",
|
|
"open_interfaces": "Open Interfaces page",
|
|
"learn_create": "Learn & Create",
|
|
"learn_create_desc": "Discover how to use MeshChatX to its full potential.",
|
|
"learn_create_desc_page": "Discover how to use MeshChatX to its full potential and create your own content.",
|
|
"documentation": "Documentation",
|
|
"documentation_desc": "Read the official MeshChatX and Reticulum documentation.",
|
|
"documentation_desc_page": "Comprehensive guides for MeshChatX and the underlying Reticulum Network Stack.",
|
|
"meshchatx_docs": "MeshChatX Docs",
|
|
"reticulum_docs": "Reticulum Docs",
|
|
"read_meshchatx_docs": "Read MeshChatX Docs",
|
|
"reticulum_manual": "Reticulum Network Manual",
|
|
"micron_editor": "Micron Editor",
|
|
"micron_editor_desc": "Take a look at the Micron Editor for a guide on creating mesh-native pages.",
|
|
"micron_editor_desc_page": "Learn how to create mesh-native pages and interactive content using the Micron markup language.",
|
|
"open_micron_editor": "Open Micron Editor",
|
|
"paper_messages": "Explore NomadNet Nodes",
|
|
"paper_messages_desc": "Browse decentralized pages and services.",
|
|
"send_messages": "Send Messages",
|
|
"send_messages_desc": "Start a secure conversation.",
|
|
"explore_nodes": "Visualize Nodes",
|
|
"explore_nodes_desc": "View the network map and topology.",
|
|
"voice_calls": "Voice Calls",
|
|
"voice_calls_desc": "Check out the awesome ringtone editor!",
|
|
"ready": "Ready to Roll!",
|
|
"ready_desc": "Everything is set up. You need to restart the application for the changes to take effect.",
|
|
"ready_desc_page": "MeshChatX is now configured. You need to restart the application to finalize the connection.",
|
|
"docker_note": "If you're running in Docker, make sure you restart the container",
|
|
"restart_required": "Restart Required",
|
|
"restart_desc_page": "If you're running in Docker, ensure you restart the container. Native apps will relaunch automatically.",
|
|
"back": "Back",
|
|
"skip": "Skip",
|
|
"next": "Next",
|
|
"restart_start": "Start MeshChatX",
|
|
"skip_setup": "Skip Setup",
|
|
"continue": "Continue",
|
|
"skip_confirm": "Are you sure you want to skip the setup? You'll need to manually add interfaces later.",
|
|
"discovery_question": "Do you want to use community interface discovering and auto-connect?",
|
|
"discovery_desc": "This allows MeshChatX to automatically find and connect to public community nodes near you or on the internet.",
|
|
"yes": "Yes, use discovery",
|
|
"no": "No, manual setup",
|
|
"discovery_enabled": "Community discovery enabled",
|
|
"failed_enable_discovery": "Failed to enable discovery"
|
|
},
|
|
"command_palette": {
|
|
"search_placeholder": "Search commands, navigate, or find peers...",
|
|
"no_results": "No results found for \"{query}\"",
|
|
"group_actions": "Actions",
|
|
"group_recent": "Recent Peers",
|
|
"group_contacts": "Contacts",
|
|
"footer_navigate": "Navigate",
|
|
"footer_select": "Select",
|
|
"nav_messages": "Messages",
|
|
"nav_messages_desc": "Open messages page",
|
|
"nav_nomad": "Nomad Network",
|
|
"nav_nomad_desc": "Browse Nomad Network pages",
|
|
"nav_map": "Map",
|
|
"nav_map_desc": "View network topology map",
|
|
"nav_paper": "Paper Messages",
|
|
"nav_paper_desc": "Generate offline messages",
|
|
"nav_call": "Voice Calls",
|
|
"nav_call_desc": "Open voice calls page",
|
|
"nav_settings": "Settings",
|
|
"nav_settings_desc": "Open settings page",
|
|
"nav_ping": "Ping",
|
|
"nav_ping_desc": "Ping network nodes",
|
|
"nav_rnprobe": "RN Probe",
|
|
"nav_rnprobe_desc": "Probe Reticulum nodes",
|
|
"nav_rncp": "RN CP",
|
|
"nav_rncp_desc": "Reticulum Control Protocol",
|
|
"nav_rnstatus": "RN Status",
|
|
"nav_rnstatus_desc": "View Reticulum status",
|
|
"nav_rnpath": "RN Path",
|
|
"nav_rnpath_desc": "View network paths",
|
|
"nav_translator": "Translator",
|
|
"nav_translator_desc": "Translate messages",
|
|
"nav_forwarder": "Forwarder",
|
|
"nav_forwarder_desc": "Message forwarding tool",
|
|
"nav_documentation": "Documentation",
|
|
"nav_documentation_desc": "View documentation",
|
|
"nav_micron_editor": "Micron Editor",
|
|
"nav_micron_editor_desc": "Create mesh-native pages",
|
|
"nav_rnode_flasher": "RNode Flasher",
|
|
"nav_rnode_flasher_desc": "Flash RNode firmware",
|
|
"nav_debug_logs": "Debug Logs",
|
|
"nav_debug_logs_desc": "View debug logs",
|
|
"action_sync": "Sync Messages",
|
|
"action_sync_desc": "Sync with propagation node",
|
|
"action_compose": "Compose Message",
|
|
"action_compose_desc": "Start a new message",
|
|
"action_orbit": "Toggle Orbit",
|
|
"action_orbit_desc": "Toggle orbit mode",
|
|
"action_bouncing_balls": "Bouncing Balls",
|
|
"action_bouncing_balls_desc": "Toggle bouncing balls mode",
|
|
"action_getting_started": "Getting Started",
|
|
"action_getting_started_desc": "Show getting started guide",
|
|
"action_changelog": "Changelog",
|
|
"action_changelog_desc": "View what's new"
|
|
}
|
|
} |