From dc54bd65a1edd73859c8f7d6ac039e179be157ca Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Sat, 3 Jan 2026 16:06:54 -0600 Subject: [PATCH] feat(locales): update German, English, and Russian translations with new terms for documentation, tutorials, banishment effects, drawing tools, and call functionalities --- meshchatx/src/frontend/locales/de.json | 122 +++++++++++++++++++++++- meshchatx/src/frontend/locales/en.json | 120 +++++++++++++++++++++++- meshchatx/src/frontend/locales/ru.json | 124 ++++++++++++++++++++++++- 3 files changed, 353 insertions(+), 13 deletions(-) diff --git a/meshchatx/src/frontend/locales/de.json b/meshchatx/src/frontend/locales/de.json index e350b82..34d337e 100644 --- a/meshchatx/src/frontend/locales/de.json +++ b/meshchatx/src/frontend/locales/de.json @@ -13,7 +13,16 @@ "tools": "Werkzeuge", "settings": "Einstellungen", "identities": "Identitäten", + "documentation": "Dokumentation", "about": "Über", + "changelog_title": "Was ist neu", + "do_not_show_again": "Für diese Version nicht mehr anzeigen", + "tutorial_title": "Tutorial", + "tutorial_welcome": "Willkommen bei MeshChatX", + "tutorial_connect": "Verbinden Sie sich mit dem Mesh", + "tutorial_finish": "Bereit zum Loslegen!", + "tutorial_restart_required": "Neustart erforderlich", + "tutorial_docker_note": "Wenn Sie in Docker ausführen, stellen Sie sicher, dass Ihr Container automatisch neu startet.", "my_identity": "Meine Identität", "identity_hash": "Identitäts-Hash", "lxmf_address": "LXMF-Adresse", @@ -119,6 +128,23 @@ "page_archiver": "Seitenarchivierer", "smart_crawler": "Smart Crawler", "authentication": "Authentifizierung", + "banishment": "Verbannung", + "banishment_description": "Passen Sie den visuellen Effekt an, der für blockierte Peers und Knoten angezeigt wird.", + "banished_effect_enabled": "Verbannungseffekt aktivieren", + "banished_effect_description": "Ein visuelles Overlay auf blockierten Peers und Knoten anzeigen.", + "banished_text_label": "Verbannungstext", + "banished_text_description": "Benutzerdefinierte Nachricht, die auf dem Overlay angezeigt werden soll.", + "banished_color_label": "Verbannungsfarbe", + "banished_color_description": "Die für den Verbannungseffekt verwendete Farbe.", + "desktop_open_calls_in_separate_window": "Anrufe in separatem Fenster öffnen", + "desktop_open_calls_in_separate_window_description": "Wenn ein Anruf aktiv ist, wird er in einem separaten Pop-out-Fenster anstatt in der App angezeigt.", + "desktop_hardware_acceleration_enabled": "Hardware-Beschleunigung", + "desktop_hardware_acceleration_enabled_description": "Deaktivieren Sie dies, wenn Sie UI-Flackern, schwarze Bildschirme oder grafische Fehler bemerken.", + "translator": "Übersetzer", + "translator_enabled": "Übersetzer aktivieren", + "translator_description": "Übersetzungsfunktionen in Gesprächen aktivieren.", + "libretranslate_url": "LibreTranslate-URL", + "libretranslate_url_description": "Die URL, unter der die LibreTranslate-API erreichbar ist.", "system": "System", "reticulum_stack": "Reticulum Stack", "reticulum_stack_description": "Verwalten Sie den zugrunde liegenden Reticulum Network Stack.", @@ -136,6 +162,7 @@ }, "common": { "open": "Öffnen", + "close": "Schließen", "cancel": "Abbrechen", "save": "Speichern", "block": "Blockieren", @@ -148,6 +175,9 @@ "refresh": "Aktualisieren", "vacuum": "Vakuumieren", "auto_recover": "Automatisch wiederherstellen", + "shutdown": "Ausschalten", + "acknowledge_reset": "Bestätigen & Zurücksetzen", + "confirm": "Bestätigen", "delete_confirm": "Sind Sie sicher, dass Sie dies löschen möchten? Dies kann nicht rückgängig gemacht werden." }, "identities": { @@ -208,7 +238,16 @@ "transport_enabled": "Transport aktiviert", "transport_disabled": "Transport deaktiviert", "identity_addresses": "Identität & Adressen", - "telephone_address": "Telefon-Adresse" + "telephone_address": "Telefon-Adresse", + "security_integrity": "Sicherheitsintegrität", + "security_integrity_description": "Systemverifizierungsstatus für Backend- und Datendateien", + "secured": "Gesichert", + "tampering_detected": "Manipulation erkannt", + "technical_issues": "Technische Probleme:", + "no_integrity_violations": "Keine Integritätsverletzungen seit dem letzten Start erkannt.", + "dependency_chain": "Abhängigkeitskette", + "other_core_components": "Andere Kernkomponenten", + "backend_dependencies": "Backend-Abhängigkeiten" }, "interfaces": { "title": "Schnittstellen", @@ -260,6 +299,7 @@ "tile_server_url_placeholder": "https://tile.openstreetmap.org/{z}/{x}/{y}.png", "tile_server_url_hint": "Verwenden Sie {z}, {x}, {y} für Zoom, Spalte, Zeile", "tile_server_saved": "Kachel-Server-URL gespeichert", + "tile_server_openstreetmap": "OpenStreetMap", "nominatim_api_url": "Nominatim API-URL", "nominatim_api_url_placeholder": "https://nominatim.openstreetmap.org", "nominatim_api_url_hint": "Basis-URL für den Nominatim-Geocoding-Service", @@ -273,7 +313,26 @@ "custom_nominatim_unavailable": "Benutzerdefinierter Nominatim-Server ist im Offline-Modus nicht erreichbar", "onboarding_title": "Als MBTiles exportieren!", "onboarding_text": "Verwenden Sie das Export-Tool, um Kartenbereiche als MBTiles-Dateien für die Offline-Nutzung herunterzuladen.", - "onboarding_got_it": "Verstanden" + "onboarding_got_it": "Verstanden", + "tool_point": "Punkt zeichnen", + "tool_linestring": "Linie zeichnen", + "tool_polygon": "Polygon zeichnen", + "tool_circle": "Kreis zeichnen", + "tool_measure": "Messen", + "tool_clear": "Zeichnungen löschen", + "save_drawing": "Ebene speichern", + "load_drawing": "Ebene laden", + "save_drawing_title": "Zeichnungsebene speichern", + "save_drawing_desc": "Speichern Sie Ihre aktuellen Kartenanmerkungen in der Datenbank.", + "drawing_name": "Ebenenname", + "drawing_name_placeholder": "z.B. Sektor Alpha", + "load_drawing_title": "Zeichnungsebene laden", + "loading_drawings": "Gespeicherte Ebenen werden geladen...", + "no_drawings": "Keine gespeicherten Ebenen", + "no_drawings_desc": "Sie haben noch keine Kartenanmerkungen gespeichert.", + "saved_on": "Gespeichert am", + "settings": "Karteneinstellungen", + "go_to_my_location": "Mein Standort" }, "interface": { "disable": "Deaktivieren", @@ -315,6 +374,7 @@ "waiting_for_announce": "Warten auf Ankündigungen!", "no_search_results_peers": "Ihre Suche ergab keine Treffer bei den Peers!", "direct": "Direkt", + "downloading": "Wird heruntergeladen", "hops": "{count} Hops", "hops_away": "{count} Hops entfernt", "snr": "SNR {snr}", @@ -327,6 +387,7 @@ "no_active_chat": "Kein aktiver Chat", "select_peer_or_enter_address": "Wählen Sie einen Peer aus der Seitenleiste oder geben Sie unten eine Adresse ein", "add_files": "Dateien hinzufügen", + "paste_from_clipboard": "Aus Zwischenablage einfügen", "location": "Standort", "share_location": "Standort teilen", "request_location": "Standort anfordern", @@ -356,6 +417,7 @@ "favourites": "Favoriten", "announces": "Ankündigungen", "search_favourites_placeholder": "Suche in {count} Favoriten...", + "search_placeholder_announces": "Suche in {count} aktuellen Ankündigungen...", "rename": "Umbenennen", "remove": "Entfernen", "no_favourites": "Keine Favoriten", @@ -407,6 +469,17 @@ "showing_range": "Zeige {start} bis {end} von {total} Archiven", "page_of": "Seite {page} von {total_pages}" }, + "docs": { + "title": "Dokumentation", + "subtitle": "Reticulum-Handbücher und Anleitungen.", + "status_title": "Dokumentationsstatus", + "status_downloading": "Wird heruntergeladen...", + "status_available": "Offline-Handbuch verfügbar", + "status_not_downloaded": "Nicht heruntergeladen", + "btn_download": "Handbücher herunterladen", + "btn_update": "Handbuch aktualisieren", + "error": "Fehler" + }, "tools": { "utilities": "Dienstprogramme", "power_tools": "Power-Tools für Betreiber", @@ -447,7 +520,13 @@ "download": "Herunterladen", "edit": "Bearbeiten", "view_preview": "Vorschau anzeigen", - "placeholder": "Geben Sie hier Ihr Micron-Markup ein..." + "placeholder": "Geben Sie hier Ihr Micron-Markup ein...", + "reset": "Zurücksetzen", + "new_tab": "Neuer Tab", + "rename_tab": "Tab umbenennen", + "confirm_reset": "Sind Sie sicher, dass Sie den Editor zurücksetzen möchten? Alle Ihre Tabs und Inhalte gehen verloren.", + "confirm_delete_tab": "Sind Sie sicher, dass Sie diesen Tab löschen möchten?", + "main_tab": "Haupt" }, "paper_message": { "title": "Papiernachricht", @@ -652,6 +731,10 @@ "greeting_message": "Begrüßungsnachricht", "enter_greeting_text": "Begrüßungstext eingeben...", "greeting_text_description": "Dieser Text wird mit eSpeak NG in Sprache umgewandelt.", + "tts_speed": "TTS Geschwindigkeit", + "tts_pitch": "TTS Tonhöhe", + "tts_voice": "TTS Stimme", + "tts_word_gap": "TTS Wortabstand", "save_and_generate": "Speichern & Generieren", "generating": "Wird generiert...", "preview_greeting": "Begrüßung anhören", @@ -660,6 +743,15 @@ "max_recording_seconds": "Max. Aufnahmezeit (s)", "recording_voicemail": "Sprachnachricht wird aufgezeichnet", "call_status": "Anrufstatus", + "call_recording": "Anruf-Rekorder", + "call_recording_description": "Sprachanrufe im Speicher aufzeichnen", + "recordings": "Aufnahmen", + "no_recordings": "Keine Aufnahmen gefunden", + "remote_rx": "Remote (RX)", + "local_tx": "Lokal (TX)", + "download_rx": "Download RX", + "download_tx": "Download TX", + "default_quality": "Standardqualität", "active_call": "Aktiver Anruf", "status": "Status", "failed_to_answer_call": "Anruf konnte nicht angenommen werden", @@ -672,6 +764,7 @@ "failed_to_save_settings": "Einstellungen konnten nicht gespeichert werden", "do_not_disturb": "Nicht stören", "load_more": "Mehr laden", + "go_to_phone_page": "Zur Telefonseite gehen", "search_history": "Verlauf durchsuchen...", "allow_calls_from_contacts_only": "Nur Anrufe von Kontakten zulassen", "settings_saved": "Einstellungen gespeichert", @@ -694,7 +787,24 @@ "failed_to_upload_ringtone": "Klingelton konnte nicht hochgeladen werden", "ringtone_deleted": "Klingelton gelöscht", "failed_to_delete_ringtone": "Klingelton konnte nicht gelöscht werden", - "no_ringtone_audio_found": "Keine Klingelton-Audio gefunden. Bitte laden Sie zuerst eine hoch." + "no_ringtone_audio_found": "Keine Klingelton-Audio gefunden. Bitte laden Sie zuerst eine hoch.", + "ringtone_volume": "Klingelton-Lautstärke", + "default_ringtone": "Standard-Klingelton", + "ringtone_for_non_contacts": "Klingelton für Anrufer, die nicht in Ihren Kontakten sind", + "primary_system_default": "Primär (System-Standard)", + "random": "Zufällig", + "edit_contact": "Kontakt bearbeiten", + "add_contact": "Kontakt hinzufügen", + "contact_name": "Kontaktname", + "preferred_ringtone": "Bevorzugter Klingelton", + "default_global_setting": "Standard (Globale Einstellung)", + "uploaded_ringtones": "Hochgeladene Klingeltöne", + "save_contact": "Kontakt speichern", + "primary_ringtone_set": "Primärer Klingelton festgelegt", + "failed_to_set_primary_ringtone": "Primärer Klingelton konnte nicht festgelegt werden", + "failed_to_update_ringtone_name": "Klingeltonname konnte nicht aktualisiert werden", + "failed_to_play_ringtone": "Klingelton konnte nicht abgespielt werden", + "failed_to_play_voicemail": "Sprachnachricht konnte nicht abgespielt werden" }, "command_palette": { "search_placeholder": "Suchen oder Befehl eingeben...", @@ -705,6 +815,8 @@ "nav_nomad_desc": "Durchsuchen Sie das verteilte Web", "nav_map": "Zur Karte gehen", "nav_map_desc": "Peer-Standorte und Telemetrie anzeigen", + "nav_paper": "Papiernachrichten-Generator", + "nav_paper_desc": "Signierte QR-Code-Nachrichten generieren", "nav_call": "Zu Anrufen gehen", "nav_call_desc": "Sprachanrufe und Voicemails", "nav_settings": "Zu Einstellungen gehen", @@ -713,6 +825,8 @@ "action_sync_desc": "Nachrichten vom Propagationsknoten anfordern", "action_compose": "Neue Nachricht verfassen", "action_compose_desc": "Starten Sie einen neuen Chat per Adresse", + "action_orbit": "Orbit-Modus", + "action_orbit_desc": "Weltraum-Orbit-Visualisierung umschalten", "group_recent": "Aktuelle Gespräche", "group_contacts": "Kontakte", "group_actions": "Schnellaktionen", diff --git a/meshchatx/src/frontend/locales/en.json b/meshchatx/src/frontend/locales/en.json index 81b09c5..02bf428 100644 --- a/meshchatx/src/frontend/locales/en.json +++ b/meshchatx/src/frontend/locales/en.json @@ -13,7 +13,16 @@ "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", + "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 your container auto-restarts.", "my_identity": "My Identity", "identity_hash": "Identity Hash", "lxmf_address": "LXMF Address", @@ -119,6 +128,23 @@ "page_archiver": "Page Archiver", "smart_crawler": "Smart Crawler", "authentication": "Authentication", + "banishment": "Banishment", + "banishment_description": "Customize the visual effect shown for blocked peers and nodes.", + "banished_effect_enabled": "Enable Banishment Effect", + "banished_effect_description": "Show a visual overlay on blocked 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.", @@ -136,6 +162,7 @@ }, "common": { "open": "Open", + "close": "Close", "cancel": "Cancel", "save": "Save", "block": "Block", @@ -148,6 +175,9 @@ "refresh": "Refresh", "vacuum": "Vacuum", "auto_recover": "Auto Recover", + "shutdown": "Shutdown", + "acknowledge_reset": "Acknowledge & Reset", + "confirm": "Confirm", "delete_confirm": "Are you sure you want to delete this? This cannot be undone." }, "identities": { @@ -208,7 +238,16 @@ "transport_enabled": "Transport Enabled", "transport_disabled": "Transport Disabled", "identity_addresses": "Identity & Addresses", - "telephone_address": "Telephone Address" + "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:", + "no_integrity_violations": "No integrity violations detected since last startup.", + "dependency_chain": "Dependency Chain", + "other_core_components": "Other Core Components", + "backend_dependencies": "Backend Dependencies" }, "interfaces": { "title": "Interfaces", @@ -260,6 +299,7 @@ "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", @@ -273,7 +313,26 @@ "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" + "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" }, "interface": { "disable": "Disable", @@ -315,6 +374,7 @@ "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}", @@ -327,6 +387,7 @@ "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", @@ -356,6 +417,7 @@ "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", @@ -407,6 +469,17 @@ "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" + }, "tools": { "utilities": "Utilities", "power_tools": "Power tools for operators", @@ -447,7 +520,13 @@ "download": "Download", "edit": "Edit", "view_preview": "View Preview", - "placeholder": "Enter your Micron markup here..." + "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" }, "paper_message": { "title": "Paper Message", @@ -652,6 +731,10 @@ "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", @@ -660,6 +743,15 @@ "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", @@ -672,6 +764,7 @@ "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", @@ -694,7 +787,24 @@ "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." + "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" }, "command_palette": { "search_placeholder": "Search or type a command...", @@ -715,6 +825,8 @@ "action_sync_desc": "Request messages from propagation node", "action_compose": "Compose New Message", "action_compose_desc": "Start a new chat by address", + "action_orbit": "Orbit Mode", + "action_orbit_desc": "Toggle space orbit visualization", "group_recent": "Recent Conversations", "group_contacts": "Contacts", "group_actions": "Quick Actions", diff --git a/meshchatx/src/frontend/locales/ru.json b/meshchatx/src/frontend/locales/ru.json index f4aef66..d59a414 100644 --- a/meshchatx/src/frontend/locales/ru.json +++ b/meshchatx/src/frontend/locales/ru.json @@ -13,7 +13,16 @@ "tools": "Инструменты", "settings": "Настройки", "identities": "Личности", + "documentation": "Документация", "about": "О программе", + "changelog_title": "Что нового", + "do_not_show_again": "Не показывать снова для этой версии", + "tutorial_title": "Руководство", + "tutorial_welcome": "Добро пожаловать в MeshChatX", + "tutorial_connect": "Подключение к сети Mesh", + "tutorial_finish": "Все готово!", + "tutorial_restart_required": "Требуется перезагрузка", + "tutorial_docker_note": "Если вы используете Docker, убедитесь, что ваш контейнер автоматически перезапускается.", "my_identity": "Моя личность", "identity_hash": "Хеш личности", "lxmf_address": "Адрес LXMF", @@ -119,6 +128,23 @@ "page_archiver": "Архиватор страниц", "smart_crawler": "Умный краулер", "authentication": "Аутентификация", + "banishment": "Изгнание", + "banishment_description": "Настройте визуальный эффект для заблокированных узлов и собеседников.", + "banished_effect_enabled": "Включить эффект изгнания", + "banished_effect_description": "Показывать визуальный оверлей на заблокированных узлах.", + "banished_text_label": "Текст изгнания", + "banished_text_description": "Текст, отображаемый поверх заблокированного узла.", + "banished_color_label": "Цвет изгнания", + "banished_color_description": "Цвет, используемый для эффекта изгнания.", + "desktop_open_calls_in_separate_window": "Открыть звонки в отдельном окне", + "desktop_open_calls_in_separate_window_description": "При активном звонке он будет отображаться в отдельном всплывающем окне, а не внутри приложения.", + "desktop_hardware_acceleration_enabled": "Аппаратное ускорение", + "desktop_hardware_acceleration_enabled_description": "Отключите это, если вы наблюдаете мерцание интерфейса, черные экраны или графические артефакты.", + "translator": "Переводчик", + "translator_enabled": "Включить переводчик", + "translator_description": "Включить функции перевода в разговорах.", + "libretranslate_url": "URL LibreTranslate", + "libretranslate_url_description": "URL-адрес, по которому доступен API LibreTranslate.", "system": "Система", "reticulum_stack": "Стек Reticulum", "reticulum_stack_description": "Управление базовым сетевым стеком Reticulum.", @@ -136,6 +162,7 @@ }, "common": { "open": "Открыть", + "close": "Закрыть", "cancel": "Отмена", "save": "Сохранить", "block": "Заблокировать", @@ -148,6 +175,9 @@ "refresh": "Обновить", "vacuum": "Сжать базу", "auto_recover": "Автовосстановление", + "shutdown": "Выключить", + "acknowledge_reset": "Подтвердить и сбросить", + "confirm": "Подтвердить", "delete_confirm": "Вы уверены, что хотите удалить это? Это действие нельзя отменить." }, "identities": { @@ -208,7 +238,16 @@ "transport_enabled": "Транспорт включен", "transport_disabled": "Транспорт выключен", "identity_addresses": "Личность и адреса", - "telephone_address": "Адрес телефона" + "telephone_address": "Адрес телефона", + "security_integrity": "Целостность безопасности", + "security_integrity_description": "Статус верификации системы для бэкенда и файлов данных", + "secured": "Защищено", + "tampering_detected": "Обнаружено вмешательство", + "technical_issues": "Технические проблемы:", + "no_integrity_violations": "Нарушений целостности не обнаружено с момента последнего запуска.", + "dependency_chain": "Цепочка зависимостей", + "other_core_components": "Другие основные компоненты", + "backend_dependencies": "Зависимости бэкенда" }, "interfaces": { "title": "Интерфейсы", @@ -260,6 +299,7 @@ "tile_server_url_placeholder": "https://tile.openstreetmap.org/{z}/{x}/{y}.png", "tile_server_url_hint": "Используйте {z}, {x}, {y} для масштаба, столбца, строки", "tile_server_saved": "URL сервера тайлов сохранен", + "tile_server_openstreetmap": "OpenStreetMap", "nominatim_api_url": "URL API Nominatim", "nominatim_api_url_placeholder": "https://nominatim.openstreetmap.org", "nominatim_api_url_hint": "Базовый URL для сервиса геокодирования Nominatim", @@ -273,7 +313,26 @@ "custom_nominatim_unavailable": "Пользовательский сервер Nominatim недоступен в офлайн-режиме", "onboarding_title": "Экспорт в MBTiles!", "onboarding_text": "Используйте инструмент экспорта для загрузки областей карты в виде файлов MBTiles для офлайн-использования.", - "onboarding_got_it": "Понятно" + "onboarding_got_it": "Понятно", + "tool_point": "Точка", + "tool_linestring": "Линия", + "tool_polygon": "Полигон", + "tool_circle": "Круг", + "tool_measure": "Измерить", + "tool_clear": "Очистить", + "save_drawing": "Сохранить слой", + "load_drawing": "Загрузить слой", + "save_drawing_title": "Сохранить слой рисунков", + "save_drawing_desc": "Сохранить текущие аннотации на карте в базу данных.", + "drawing_name": "Название слоя", + "drawing_name_placeholder": "напр., Сектор Альфа", + "load_drawing_title": "Загрузить слой рисунков", + "loading_drawings": "Загрузка сохраненных слоев...", + "no_drawings": "Нет сохраненных слоев", + "no_drawings_desc": "Вы еще не сохранили ни одной аннотации на карте.", + "saved_on": "Сохранено", + "settings": "Настройки карты", + "go_to_my_location": "Мое местоположение" }, "interface": { "disable": "Выключить", @@ -315,6 +374,7 @@ "waiting_for_announce": "Ожидание анонсов!", "no_search_results_peers": "По вашему запросу собеседников не найдено!", "direct": "Прямая связь", + "downloading": "Загрузка", "hops": "{count} прыжков", "hops_away": "в {count} прыжках", "snr": "SNR {snr}", @@ -327,6 +387,7 @@ "no_active_chat": "Нет активного чата", "select_peer_or_enter_address": "Выберите собеседника из списка или введите адрес ниже", "add_files": "Добавить файлы", + "paste_from_clipboard": "Вставить из буфера обмена", "location": "Местоположение", "share_location": "Поделиться местоположением", "request_location": "Запросить местоположение", @@ -356,6 +417,7 @@ "favourites": "Избранное", "announces": "Анонсы", "search_favourites_placeholder": "Поиск по {count} избранным...", + "search_placeholder_announces": "Поиск по {count} недавним анонсам...", "rename": "Переименовать", "remove": "Удалить", "no_favourites": "Нет избранного", @@ -407,6 +469,17 @@ "showing_range": "Показано с {start} по {end} из {total} архивов", "page_of": "Страница {page} из {total_pages}" }, + "docs": { + "title": "Документация", + "subtitle": "Руководства и справочники Reticulum.", + "status_title": "Статус документации", + "status_downloading": "Загрузка...", + "status_available": "Доступно офлайн", + "status_not_downloaded": "Не загружено", + "btn_download": "Скачать руководства", + "btn_update": "Обновить руководство", + "error": "Ошибка" + }, "tools": { "utilities": "Утилиты", "power_tools": "Инструменты для операторов", @@ -447,7 +520,13 @@ "download": "Скачать", "edit": "Редактировать", "view_preview": "Просмотр", - "placeholder": "Введите разметку Micron здесь..." + "placeholder": "Введите разметку Micron здесь...", + "reset": "Сброс", + "new_tab": "Новая вкладка", + "rename_tab": "Переименовать вкладку", + "confirm_reset": "Вы уверены, что хотите сбросить редактор? Все ваши вкладки и содержимое будут потеряны.", + "confirm_delete_tab": "Вы уверены, что хотите удалить эту вкладку?", + "main_tab": "Основная" }, "paper_message": { "title": "Бумажное сообщение", @@ -652,6 +731,10 @@ "greeting_message": "Приветственное сообщение", "enter_greeting_text": "Введите текст приветствия...", "greeting_text_description": "Этот текст будет преобразован в речь с помощью eSpeak NG.", + "tts_speed": "Скорость TTS", + "tts_pitch": "Высота TTS", + "tts_voice": "Голос TTS", + "tts_word_gap": "Пауза между словами TTS", "save_and_generate": "Сохранить и создать", "generating": "Создание...", "preview_greeting": "Предпросмотр приветствия", @@ -660,6 +743,15 @@ "max_recording_seconds": "Макс. время записи (с)", "recording_voicemail": "Запись голосового сообщения", "call_status": "Статус звонка", + "call_recording": "Запись звонков", + "call_recording_description": "Записывать голосовые звонки в хранилище", + "recordings": "Записи", + "no_recordings": "Записей не найдено", + "remote_rx": "Удаленный (RX)", + "local_tx": "Локальный (TX)", + "download_rx": "Скачать RX", + "download_tx": "Скачать TX", + "default_quality": "Качество по умолчанию", "active_call": "Активный звонок", "status": "Статус", "failed_to_answer_call": "Не удалось ответить на звонок", @@ -672,8 +764,9 @@ "failed_to_save_settings": "Не удалось сохранить настройки", "do_not_disturb": "Не беспокоить", "load_more": "Загрузить еще", + "go_to_phone_page": "На страницу телефона", "search_history": "Поиск по истории...", - "allow_calls_from_contacts_only": "Разрешить звонки только от контактов", + "allow_calls_from_contacts_only": "Звонки только от контактов", "settings_saved": "Настройки сохранены", "greeting_generated_successfully": "Приветствие успешно создано", "failed_to_generate_greeting": "Не удалось создать приветствие", @@ -694,7 +787,24 @@ "failed_to_upload_ringtone": "Не удалось загрузить рингтон", "ringtone_deleted": "Рингтон удален", "failed_to_delete_ringtone": "Не удалось удалить рингтон", - "no_ringtone_audio_found": "Аудио рингтона не найдено. Пожалуйста, сначала загрузите его." + "no_ringtone_audio_found": "Аудио рингтона не найдено. Пожалуйста, сначала загрузите его.", + "ringtone_volume": "Громкость рингтона", + "default_ringtone": "Рингтон по умолчанию", + "ringtone_for_non_contacts": "Рингтон для звонков не из списка контактов", + "primary_system_default": "Основной (системный)", + "random": "Случайный", + "edit_contact": "Изменить контакт", + "add_contact": "Добавить контакт", + "contact_name": "Имя контакта", + "preferred_ringtone": "Предпочитаемый рингтон", + "default_global_setting": "По умолчанию (общие настройки)", + "uploaded_ringtones": "Загруженные рингтоны", + "save_contact": "Сохранить контакт", + "primary_ringtone_set": "Основной рингтон установлен", + "failed_to_set_primary_ringtone": "Не удалось установить основной рингтон", + "failed_to_update_ringtone_name": "Не удалось обновить название рингтона", + "failed_to_play_ringtone": "Не удалось воспроизвести рингтон", + "failed_to_play_voicemail": "Не удалось воспроизвести сообщение" }, "command_palette": { "search_placeholder": "Поиск или ввод команды...", @@ -705,6 +815,8 @@ "nav_nomad_desc": "Просмотр распределенной сети", "nav_map": "Перейти к карте", "nav_map_desc": "Просмотр местоположения и телеметрии", + "nav_paper": "Генератор бумажных сообщений", + "nav_paper_desc": "Создание подписанных QR-кодов", "nav_call": "Перейти к звонкам", "nav_call_desc": "Голосовые звонки и голосовая почта", "nav_settings": "Перейти к настройкам", @@ -713,6 +825,8 @@ "action_sync_desc": "Запросить сообщения с узла", "action_compose": "Написать новое сообщение", "action_compose_desc": "Начать новый чат по адресу", + "action_orbit": "Режим орбиты", + "action_orbit_desc": "Визуализация космической орбиты", "group_recent": "Недавние разговоры", "group_contacts": "Контакты", "group_actions": "Быстрые действия",