diff --git a/screen_manager/app/i18n.py b/screen_manager/app/i18n.py index 521cb40..a8e2029 100644 --- a/screen_manager/app/i18n.py +++ b/screen_manager/app/i18n.py @@ -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.""" diff --git a/screen_manager/app/server.py b/screen_manager/app/server.py index 8dea2dc..0fcb10d 100644 --- a/screen_manager/app/server.py +++ b/screen_manager/app/server.py @@ -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()