Keep the news at the end of a tile's line: a shorter "Yest. 9:15 PM" and a robot's battery that stays

A tile has one line under the name, and LVGL cuts what doesn't fit off the end, which is where that line
often carries what you want to read. Two lines lost it:

- "Yesterday 9:15 PM" (English with a 12-hour clock) read "Yesterday 9:1…" on both boards. The tile now takes
  a shorter wording of the same line when the full one doesn't fit, screen.script.yesterday_time_short; every
  language whose word is short enough keeps the same text there.
- A robot's battery stood behind Home Assistant's own word for its state, so German, French and Polish showed
  "Angedockt / 10…". The battery keeps its room now and the word takes the dots: "Angedo… / 10 %".

`tools/i18n.py check` measures a tile line with a 12-hour clock in its placeholder, so a translation that is
too long for the line fails there.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Max Gramser
2026-09-19 23:37:10 +02:00
parent 022a384ec3
commit 657cb35953
12 changed files with 201 additions and 151 deletions
+2 -1
View File
@@ -3,7 +3,7 @@
#pragma once
#include "components/smart_display/screen_text.h"
static_assert(screen_text::KEYS_HASH == 0x8FB53847u && screen_text::KEY_COUNT == 321,
static_assert(screen_text::KEYS_HASH == 0x6D3912FFu && screen_text::KEY_COUNT == 322,
"screen_text_keys.h does not match screen_manager/translations/en.json: run tools/i18n.py header");
const char *const screen_text::TABLE[] = {
".",
@@ -189,6 +189,7 @@ const char *const screen_text::TABLE[] = {
"Never run",
"Last {time}",
"Yesterday {time}",
"Yest. {time}",
"Last {date}",
"No image from this camera",
"Loading image",