From 1c2e372263e6703c44b3908584a1ff699f981aed Mon Sep 17 00:00:00 2001 From: Ivan Date: Tue, 14 Apr 2026 19:35:36 -0500 Subject: [PATCH] feat(locales): add backend connection status messages and new actions in multiple languages --- meshchatx/src/frontend/locales/de.json | 20 ++++++++++++++++++-- meshchatx/src/frontend/locales/en.json | 18 +++++++++++++++++- meshchatx/src/frontend/locales/it.json | 18 +++++++++++++++++- meshchatx/src/frontend/locales/ru.json | 18 +++++++++++++++++- 4 files changed, 69 insertions(+), 5 deletions(-) diff --git a/meshchatx/src/frontend/locales/de.json b/meshchatx/src/frontend/locales/de.json index 2d28a3f..8ae0fdb 100644 --- a/meshchatx/src/frontend/locales/de.json +++ b/meshchatx/src/frontend/locales/de.json @@ -213,6 +213,8 @@ "loading_overlay_title": "Profil wird gewechselt", "loading_overlay_subtitle": "Chats und Einstellungen werden geladen. Das dauert meist nur wenige Sekunden.", "emergency_mode_active": "Notfallmodus aktiv - In-Memory-Datenbank und eingeschränkte Dienste werden verwendet.", + "backend_disconnected": "Verbindung zum Backend getrennt", + "backend_reconnected": "Wieder mit dem Backend verbunden", "blackhole_integration_enabled": "Blackhole-Integration", "blackhole_integration_description": "Identitäten automatisch auf der Reticulum-Transportebene sperren (Blackhole), wenn Benutzer in MeshChatX verbannt werden.", "announce_limits": "Ankündigungslimits", @@ -1651,7 +1653,13 @@ "action_changelog": "Änderungsprotokoll", "action_changelog_desc": "Letzte Änderungen", "action_bouncing_balls": "Bouncing Balls", - "action_bouncing_balls_desc": "Physik-Demo im Graph" + "action_bouncing_balls_desc": "Physik-Demo im Graph", + "action_falling_skies": "Falling Skies", + "action_falling_skies_desc": "Neue Knoten oben im Visualizer einfallen lassen", + "action_snake": "Mesh Snake", + "action_snake_desc": "Alle Knoten fressen; der Schwanz sind die gefressenen Knoten", + "action_pong": "Mesh Pong", + "action_pong_desc": "Du gegen KI; Punktestand oben" }, "settings": { "shortcut_saved": "Shortcut saved", @@ -1737,7 +1745,15 @@ "batch": "Batch", "loading_status": "Loading status", "failed_load": "Failed to load network data", - "max_hops_filter": "Max. Hops" + "max_hops_filter": "Max. Hops", + "show_disabled_interfaces": "Offline-Interfaces anzeigen", + "show_discovered_interfaces": "Entdeckte Interfaces anzeigen", + "snake_win": "Du hast jeden Knoten gefressen.", + "snake_hit_self": "Eigene Spur getroffen. Game over.", + "snake_hint": "Pfeiltasten oder WASD zum Steuern. Friss alle Knoten ohne die eigene Spur zu kreuzen.", + "pong_hint": "W und S bewegen dein Paddle (links). Rechts spielt die KI. Wer zuerst 7 Punkte hat, gewinnt.", + "pong_win_you": "Du gewinnst.", + "pong_win_ai": "KI gewinnt." }, "banishment": { "title": "Banished", diff --git a/meshchatx/src/frontend/locales/en.json b/meshchatx/src/frontend/locales/en.json index f64e6f4..e5a9625 100644 --- a/meshchatx/src/frontend/locales/en.json +++ b/meshchatx/src/frontend/locales/en.json @@ -220,6 +220,8 @@ "loading_overlay_title": "Switching profile", "loading_overlay_subtitle": "Loading your chats and settings. This usually takes a few seconds.", "emergency_mode_active": "Emergency Mode Active - Using in-memory database and restricted services.", + "backend_disconnected": "Disconnected from backend", + "backend_reconnected": "Reconnected to backend", "blackhole_integration_enabled": "Blackhole Integration", "blackhole_integration_description": "Automatically blackhole identities at the Reticulum transport layer when banishing users in MeshChatX.", "announce_limits": "Announce Limits", @@ -863,7 +865,15 @@ "batch": "Batch", "loading_status": "Loading status", "failed_load": "Failed to load network data", - "max_hops_filter": "Max hops" + "max_hops_filter": "Max hops", + "show_disabled_interfaces": "Show offline interfaces", + "show_discovered_interfaces": "Show discovered interfaces", + "snake_win": "You ate every node on the graph.", + "snake_hit_self": "Self-collision. Game over.", + "snake_hint": "Arrow keys or WASD to steer. Eat every node without crossing your tail.", + "pong_hint": "W and S move your paddle (left). Right paddle is AI. First to 7 points wins.", + "pong_win_you": "You win.", + "pong_win_ai": "AI wins." }, "banishment": { "title": "Banished", @@ -1752,6 +1762,12 @@ "action_orbit_desc": "Orbit camera in network graph", "action_bouncing_balls": "Bouncing Balls", "action_bouncing_balls_desc": "Physics demo on the graph", + "action_falling_skies": "Falling Skies", + "action_falling_skies_desc": "Drop new graph nodes from the top of the visualizer", + "action_snake": "Mesh Snake", + "action_snake_desc": "Eat every node; your tail is the nodes you collect", + "action_pong": "Mesh Pong", + "action_pong_desc": "You vs AI; score at the top", "action_getting_started": "Getting Started", "action_getting_started_desc": "Open the setup guide", "action_changelog": "Changelog", diff --git a/meshchatx/src/frontend/locales/it.json b/meshchatx/src/frontend/locales/it.json index 7615730..27fb0e8 100644 --- a/meshchatx/src/frontend/locales/it.json +++ b/meshchatx/src/frontend/locales/it.json @@ -220,6 +220,8 @@ "loading_overlay_title": "Cambio profilo", "loading_overlay_subtitle": "Caricamento chat e impostazioni. Di solito bastano pochi secondi.", "emergency_mode_active": "Modalità Emergenza Attiva - Utilizzo del database in memoria e servizi limitati.", + "backend_disconnected": "Disconnesso dal backend", + "backend_reconnected": "Riconnesso al backend", "blackhole_integration_enabled": "Integrazione Blackhole", "blackhole_integration_description": "Metti automaticamente in blackhole le identità a livello di trasporto Reticulum quando esili gli utenti in MeshChatX.", "announce_limits": "Limiti annunci", @@ -913,7 +915,15 @@ "batch": "Batch", "loading_status": "Stato caricamento", "failed_load": "Impossibile caricare i dati di rete", - "max_hops_filter": "Salti max" + "max_hops_filter": "Salti max", + "show_disabled_interfaces": "Mostra interfacce offline", + "show_discovered_interfaces": "Mostra interfacce scoperte", + "snake_win": "Hai mangiato ogni nodo nel grafo.", + "snake_hit_self": "Collisione con te stesso. Game over.", + "snake_hint": "Frecce o WASD per sterzare. Mangia tutti i nodi senza incrociare la coda.", + "pong_hint": "W e S muovono la tua racchetta (sinistra). A destra c'è la IA. Vince chi arriva a 7 punti.", + "pong_win_you": "Hai vinto.", + "pong_win_ai": "Vince la IA." }, "banishment": { "title": "Esiliati", @@ -1752,6 +1762,12 @@ "action_orbit_desc": "Camera orbita nel grafico di rete", "action_bouncing_balls": "Palle Rimbalzanti", "action_bouncing_balls_desc": "Demo fisica sul grafico", + "action_falling_skies": "Falling Skies", + "action_falling_skies_desc": "Nuovi nodi cadono dall'alto nel visualizzatore", + "action_snake": "Mesh Snake", + "action_snake_desc": "Mangia ogni nodo; la coda sono i nodi raccolti", + "action_pong": "Mesh Pong", + "action_pong_desc": "Tu contro IA; punteggio in alto", "action_getting_started": "Guida Introduttiva", "action_getting_started_desc": "Apri la guida di configurazione", "action_changelog": "Changelog", diff --git a/meshchatx/src/frontend/locales/ru.json b/meshchatx/src/frontend/locales/ru.json index 4cc703a..275c6c9 100644 --- a/meshchatx/src/frontend/locales/ru.json +++ b/meshchatx/src/frontend/locales/ru.json @@ -213,6 +213,8 @@ "loading_overlay_title": "Смена профиля", "loading_overlay_subtitle": "Загрузка чатов и настроек. Обычно это занимает несколько секунд.", "emergency_mode_active": "Аварийный режим активен — используется база данных в оперативной памяти и ограниченные службы.", + "backend_disconnected": "Нет соединения с сервером", + "backend_reconnected": "Соединение с сервером восстановлено", "blackhole_integration_enabled": "Интеграция Blackhole", "blackhole_integration_description": "Автоматически блокировать (blackhole) личности на транспортном уровне Reticulum при изгнании пользователей в MeshChatX.", "announce_limits": "Лимиты объявлений", @@ -1648,6 +1650,12 @@ "action_orbit_desc": "Камера Orbit на графе сети", "action_bouncing_balls": "Прыгающие шарики", "action_bouncing_balls_desc": "Демонстрация физики на графе", + "action_falling_skies": "Falling Skies", + "action_falling_skies_desc": "Новые узлы падают сверху в визуализаторе", + "action_snake": "Mesh Snake", + "action_snake_desc": "Съешьте все узлы; хвост из собранных узлов", + "action_pong": "Mesh Pong", + "action_pong_desc": "Вы против ИИ; счёт сверху", "action_getting_started": "Начало работы", "action_getting_started_desc": "Открыть мастер настройки", "action_changelog": "Список изменений", @@ -1737,7 +1745,15 @@ "batch": "Batch", "loading_status": "Loading status", "failed_load": "Failed to load network data", - "max_hops_filter": "Макс. хопов" + "max_hops_filter": "Макс. хопов", + "show_disabled_interfaces": "Показать отключенные интерфейсы", + "show_discovered_interfaces": "Показать обнаруженные интерфейсы", + "snake_win": "Съедены все узлы на графе.", + "snake_hit_self": "Столкновение с собой. Конец игры.", + "snake_hint": "Стрелки или WASD. Съешьте все узлы, не пересекая хвост.", + "pong_hint": "W и S — ваша ракетка (слева). Справа играет ИИ. Победа при 7 очках.", + "pong_win_you": "Вы выиграли.", + "pong_win_ai": "Победил ИИ." }, "banishment": { "title": "Banished",