The editor's mockup writes like the screens, and speaks its own language around them

- Numbers in the mockup follow what the app sends the screens (style, grouping from five digits, the space before
  %), a state without a unit stays as it is, and built-in cards carry the screens' names (Instellingen, not the
  editor's Einstellungen).
- Automatic in Language & region is labelled with what it means now (Home Assistant's language decides).
- A screen's status (Synced, Loading tiles, ...) shows in the editor's language; the screens keep reporting it in
  English, which the app reads.
- The doorbell example uses the alert examples of the editor's language; control labels keep their capitals.
- Editor bundle rebuilt with every language's texts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Max Gramser
2026-09-19 16:57:35 +02:00
parent 125346d94e
commit 365ed158b9
37 changed files with 217 additions and 73 deletions
+13 -1
View File
@@ -560,7 +560,15 @@
"too_large": "Layout gespeichert; zu groß für eine Nachricht an den Bildschirm, entferne ein paar Kacheln",
"sent": "An Home Assistant gesendet",
"offline": "Bildschirm offline; Änderungen gespeichert",
"retrying": "Senden fehlgeschlagen; wird automatisch wiederholt"
"retrying": "Senden fehlgeschlagen; wird automatisch wiederholt",
"screen": {
"synced": "Synchronisiert",
"loading_tiles": "Kacheln werden geladen",
"layout_received": "Layout empfangen",
"resend_needed": "Erneutes Senden nötig",
"ready": "Bereit für die Kacheln",
"error": "Fehler: {reason}"
}
},
"updates": {
"offline": "Bildschirm war offline; neuer Versuch beim nächsten Mal.",
@@ -1755,6 +1763,10 @@
"every": "Alle Bildschirme? Löse {event} einmal aus (siehe „Alle Bildschirme auf einmal“). Die Bildschirme arbeiten trotzdem unabhängig, und jeder meldet sich mit seinem eigenen {screen}.",
"claude": "Für die Automation lieber {bold}? Installiere den ESP Screens-Skill unter Einstellungen → Claude.",
"claude_bold": "Claude fragen"
},
"wait_yaml": {
"comment": "Türklingel: die Meldung zeigen und warten, bis jemand die Taste drückt.",
"message": "Jemand kommt zur Tür."
}
},
"override": {
+13 -1
View File
@@ -560,7 +560,15 @@
"too_large": "Layout saved; too large for one message to the screen, remove a few tiles",
"sent": "Sent to Home Assistant",
"offline": "Screen offline; changes saved",
"retrying": "Sending failed; retrying automatically"
"retrying": "Sending failed; retrying automatically",
"screen": {
"synced": "Synced",
"loading_tiles": "Loading tiles",
"layout_received": "Layout received",
"resend_needed": "Resend needed",
"ready": "Ready for tile configuration",
"error": "Error: {reason}"
}
},
"updates": {
"offline": "Screen was offline; will retry next time.",
@@ -1755,6 +1763,10 @@
"every": "Every screen? Fire {event} once (see All screens at once). The screens still work independently and each reports with its own {screen}.",
"claude": "Rather {bold} for the automation? Install the ESP Screens skill under Settings → Claude.",
"claude_bold": "ask Claude"
},
"wait_yaml": {
"comment": "Doorbell: show the alert and wait until someone presses the button.",
"message": "Someone is coming to the door."
}
},
"override": {
+13 -1
View File
@@ -560,7 +560,15 @@
"too_large": "Diseño guardado; es demasiado grande para un mensaje a la pantalla, elimina algunos mosaicos",
"sent": "Enviado a Home Assistant",
"offline": "Pantalla sin conexión; cambios guardados",
"retrying": "Error al enviar; se reintenta automáticamente"
"retrying": "Error al enviar; se reintenta automáticamente",
"screen": {
"synced": "Sincronizado",
"loading_tiles": "Cargando mosaicos",
"layout_received": "Diseño recibido",
"resend_needed": "Hay que volver a enviar",
"ready": "Listo para los mosaicos",
"error": "Error: {reason}"
}
},
"updates": {
"offline": "La pantalla estaba sin conexión; se volverá a intentar la próxima vez.",
@@ -1755,6 +1763,10 @@
"every": "¿Todas las pantallas? Dispara {event} una vez (consulta «Todas las pantallas a la vez»). Las pantallas siguen funcionando por separado y cada una informa con su propio {screen}.",
"claude": "¿Prefieres {bold} que te haga la automatización? Instala la habilidad de ESP Screens en Configuración → Claude.",
"claude_bold": "pedirle a Claude"
},
"wait_yaml": {
"comment": "Timbre: muestra la alerta y espera a que alguien pulse el botón.",
"message": "Alguien va a abrir la puerta."
}
},
"override": {
+13 -1
View File
@@ -560,7 +560,15 @@
"too_large": "Mise en page enregistrée ; trop grande pour un seul message à l'écran, retirez quelques tuiles",
"sent": "Envoyé à Home Assistant",
"offline": "Écran hors ligne ; modifications enregistrées",
"retrying": "Échec de l'envoi ; nouvel essai automatique"
"retrying": "Échec de l'envoi ; nouvel essai automatique",
"screen": {
"synced": "Synchronisé",
"loading_tiles": "Chargement des tuiles",
"layout_received": "Disposition reçue",
"resend_needed": "Nouvel envoi nécessaire",
"ready": "Prêt pour les tuiles",
"error": "Erreur : {reason}"
}
},
"updates": {
"offline": "L'écran était hors ligne ; nouvel essai la prochaine fois.",
@@ -1755,6 +1763,10 @@
"every": "Tous les écrans ? Déclenchez {event} une seule fois (voir Tous les écrans à la fois). Les écrans restent indépendants et chacun répond avec son propre {screen}.",
"claude": "Vous préférez {bold} pour l'automatisation ? Installez la compétence ESP Screens dans Paramètres → Claude.",
"claude_bold": "demander à Claude"
},
"wait_yaml": {
"comment": "Sonnette : afficher l’alerte et attendre qu’on appuie sur le bouton.",
"message": "Quelqu’un arrive à la porte."
}
},
"override": {
+13 -1
View File
@@ -560,7 +560,15 @@
"too_large": "Disposizione salvata; troppo grande per un solo messaggio allo schermo, rimuovi qualche riquadro",
"sent": "Inviato a Home Assistant",
"offline": "Schermo offline; modifiche salvate",
"retrying": "Invio non riuscito; nuovo tentativo automatico"
"retrying": "Invio non riuscito; nuovo tentativo automatico",
"screen": {
"synced": "Sincronizzato",
"loading_tiles": "Caricamento dei riquadri",
"layout_received": "Layout ricevuto",
"resend_needed": "Serve un nuovo invio",
"ready": "Pronto per i riquadri",
"error": "Errore: {reason}"
}
},
"updates": {
"offline": "Lo schermo era offline; nuovo tentativo la prossima volta.",
@@ -1755,6 +1763,10 @@
"every": "Tutti gli schermi? Attiva {event} una sola volta (vedi Tutti gli schermi insieme). Gli schermi restano indipendenti e ognuno risponde con il proprio {screen}.",
"claude": "Preferisci {bold} l'automazione? Installa la skill di ESP Screens in Impostazioni → Claude.",
"claude_bold": "chiedere a Claude"
},
"wait_yaml": {
"comment": "Campanello: mostra l’avviso e aspetta che qualcuno prema il pulsante.",
"message": "Qualcuno sta arrivando alla porta."
}
},
"override": {
+13 -1
View File
@@ -560,7 +560,15 @@
"too_large": "Indeling bewaard; te groot voor één bericht aan het scherm, verwijder een paar tegels",
"sent": "Verstuurd naar Home Assistant",
"offline": "Scherm offline; wijzigingen bewaard",
"retrying": "Versturen mislukt; automatisch opnieuw proberen"
"retrying": "Versturen mislukt; automatisch opnieuw proberen",
"screen": {
"synced": "Gesynchroniseerd",
"loading_tiles": "Tegels laden",
"layout_received": "Indeling ontvangen",
"resend_needed": "Indeling opnieuw nodig",
"ready": "Klaar voor tegelconfiguratie",
"error": "Fout: {reason}"
}
},
"updates": {
"offline": "Scherm was offline; volgende keer opnieuw.",
@@ -1755,6 +1763,10 @@
"every": "Alle schermen? Vuur {event} één keer af (zie Alle schermen tegelijk). De schermen werken nog steeds los van elkaar en melden zich elk met hun eigen {screen}.",
"claude": "Liever {bold} om de automatisering te schrijven? Installeer de ESP Screens-skill onder Instellingen → Claude.",
"claude_bold": "Claude vragen"
},
"wait_yaml": {
"comment": "Deurbel: toon de alert en wacht tot iemand op de knop drukt.",
"message": "Er komt iemand naar de deur."
}
},
"override": {
+13 -1
View File
@@ -560,7 +560,15 @@
"too_large": "Układ zapisany; za duży na jedną wiadomość do ekranu, usuń kilka kafelków",
"sent": "Wysłano do Home Assistant",
"offline": "Ekran offline; zmiany zapisane",
"retrying": "Wysyłanie nieudane; automatyczne ponawianie"
"retrying": "Wysyłanie nieudane; automatyczne ponawianie",
"screen": {
"synced": "Zsynchronizowano",
"loading_tiles": "Ładowanie kafelków",
"layout_received": "Odebrano układ",
"resend_needed": "Wymagane ponowne wysłanie",
"ready": "Gotowy na kafelki",
"error": "Błąd: {reason}"
}
},
"updates": {
"offline": "Ekran był offline; kolejna próba następnym razem.",
@@ -1755,6 +1763,10 @@
"every": "Wszystkie ekrany? Wywołaj {event} raz (zobacz „Wszystkie ekrany naraz”). Ekrany nadal działają niezależnie i każdy zgłasza się z własnym polem {screen}.",
"claude": "Wolisz {bold} o automatyzację? Zainstaluj umiejętność ESP Screens w sekcji Ustawienia → Claude.",
"claude_bold": "poprosić Claude"
},
"wait_yaml": {
"comment": "Dzwonek: pokaż alert i poczekaj, aż ktoś naciśnie przycisk.",
"message": "Ktoś idzie do drzwi."
}
},
"override": {
+13 -1
View File
@@ -560,7 +560,15 @@
"too_large": "Layout guardado; demasiado grande para uma mensagem para o ecrã, remova alguns mosaicos",
"sent": "Enviado para o Home Assistant",
"offline": "Ecrã offline; alterações guardadas",
"retrying": "O envio falhou; a tentar novamente automaticamente"
"retrying": "O envio falhou; a tentar novamente automaticamente",
"screen": {
"synced": "Sincronizado",
"loading_tiles": "A carregar mosaicos",
"layout_received": "Layout recebido",
"resend_needed": "É preciso reenviar",
"ready": "Pronto para os mosaicos",
"error": "Erro: {reason}"
}
},
"updates": {
"offline": "O ecrã estava offline; vai tentar novamente da próxima vez.",
@@ -1755,6 +1763,10 @@
"every": "Todos os ecrãs? Dispare {event} uma vez (ver «Todos os ecrãs de uma vez»). Os ecrãs continuam a funcionar de forma independente e cada um reporta com o seu próprio {screen}.",
"claude": "Prefere {bold} que faça a automatização? Instale a habilidade do ESP Screens em Definições → Claude.",
"claude_bold": "pedir ao Claude"
},
"wait_yaml": {
"comment": "Campainha: mostra o alerta e espera que alguém prima o botão.",
"message": "Vem alguém à porta."
}
},
"override": {