Keep the screens' language at hand for the words the app sends them itself

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Max Gramser
2026-09-19 14:25:07 +02:00
parent 378d0b3e61
commit 520826821f
2 changed files with 21 additions and 0 deletions
+19
View File
@@ -133,6 +133,25 @@ def t(key, **params):
return TRANSLATIONS.text(key, REQUEST_LANGUAGE.get(), **params)
# The screens' language and number format (Settings -> Language & region), for the words the app sends to the screens
# itself: tile names, the top bar, the history card. The manager keeps it current (Manager.language_changed).
SCREENS = {'language': 'en', 'numbers': 'point'}
def set_screens(language, numbers):
SCREENS.update(language=language, numbers=numbers)
def screen_t(key, **params):
"""A text in the screens' language, for what the app sends to them."""
return TRANSLATIONS.text(key, SCREENS['language'], **params)
def screen_number(text):
"""A number as Home Assistant sends it, written as the screens write numbers ("1.234,5" in Dutch)."""
return format_number(text, SCREENS['numbers'])
class Region:
"""Settings -> Language & region, kept in /data/language.json: one language, clock and number format for every
screen. A screen's firmware carries its language; the clock and the numbers travel in the layout message."""
+2
View File
@@ -571,6 +571,7 @@ class Manager:
self.ha.language_of = self.region.language
self.ha.on_config = self.language_changed
self.pin_clock = False
i18n.set_screens(self.region.language(), self.region.number_style())
self.skill_dir = claude_skill.skill_dir()
self._registry_source, self._registry_index = None, {}
self._items_source, self._items = None, []
@@ -1151,6 +1152,7 @@ class Manager:
if known and all(state == 'off' for state in known):
self.region.clock = '12'
self.region.save()
i18n.set_screens(self.region.language(), self.region.number_style())
self.ha.services_changed.set()
self.sent.clear()
self.write_languages()