Commit Graph

9 Commits

Author SHA1 Message Date
Max Gramser 85feb9a740 Climate fan and swing settings in Home Assistant's words
The climate card's fan and swing rows showed the raw mode names (Auto, Low, Medium, High) in every language.
Home Assistant names the common ones itself (Laag, Mittel, Élevée): ha-words now copies those into screen.ha, and
the card looks a mode up there; an integration's own mode still reads as its name. ha-words also says how many
words it really changed. Found in the second test pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 20:17:32 +02:00
Max Gramser f02f429188 Weekdays that fit the weather columns, the top bar's own abbreviation, tile texts that fit, and a check that measures them
- The CYD's weather columns hold two letters beside the icon: every language has its own two-letter days (the CLDR's
  short width, Polish nd pn wt); French mar became nar there. check fails on a longer one.
- The top bar takes the language's abbreviation (sam. 19 sept., Sa., 19. Sept.), English keeps Sa 19 Sep.
- The editor's clock and date follow the screens: 7:05 PM in the top bar, 7:05 on the clock card.
- A long weather word ends in an ellipsis before the days.
- Tile lines that were cut on a screen are shorter (Zum Öffnen, Ouvrir, Otwórz, Sin imagen, ...); check measures
  them with the screens' font against the tile width of both boards.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 17:13:59 +02:00
Max Gramser 365ed158b9 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>
2026-09-19 16:57:35 +02:00
Max Gramser 125346d94e Notation like Home Assistant, each screen in its own language, and the language in every build
From the end-to-end test on the bench boards and an independent review:
- Units spaced as Home Assistant does (54% / 54 % in German and French, 18°, 21.5 °C), in the firmware and the app.
- Grouping from five digits where the language does (1234 but 12.345 in Spanish, Polish, Portuguese): the layout
  message carries group_min and percent_space; an unknown number style no longer refuses a layout.
- Automatic follows Home Assistant's own language for the clock and numbers, also without a translation (Swedish:
  24 hours, 1 234,5; pt-BR: 1.234,5): regions.json from the CLDR for all 63 languages Home Assistant offers.
- 12-hour clock: the top bar says 3:48 PM, the clock card 3:48 (not 03:48), Last runs follow the clock.
- The climate setpoint font has the decimal comma; the value fonts have ², ³ and µ (m³ was a box).
- Weather days: at most three letters without the dot (mié, sáb, czw); the screen took three bytes.
- Texts fall back per key through the base language (pt-BR -> pt -> en) in the firmware and the app.
- Each screen gets the app's words in the language its firmware speaks; firmware from before the languages gets
  English and its own letters, not boxes.
- set_language re-reads what it writes (indentation, comments, quoted keys, CRLF, !include) and every build writes
  the language first; the 24-hour pin no longer hits a fresh install and waits for the old clock switches.
- Tests: region and notation, plural parity with the C++ rules, set_language edge cases, the pin, PUT /api/language.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 16:52:34 +02:00
Max Gramser aa36872073 The app's messages in Spanish and Portuguese
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 15:44:05 +02:00
Max Gramser e2284de7f3 The editor in Spanish and Portuguese, and Portugal's plural rule for Portuguese
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 15:28:54 +02:00
Max Gramser 7f1fe36b3e German, French, Italian, Spanish, Portuguese and Polish texts for the screens, and a check for the editor's special characters
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 14:44:13 +02:00
Max Gramser 851c1772e5 Take Unavailable and the Activate, Run and Press words from Home Assistant's frontend too
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 14:40:27 +02:00
Max Gramser 951dceebf9 Add Dutch, German, French, Italian, Spanish, Portuguese and Polish with their calendars and Home Assistant's own words
tools/i18n.py gets cldr (day and month names, date orders, numbers and the clock from Node's Intl), ha-words (the
words for states from Home Assistant's own translations, English included) and lint (English left in the firmware's
code). The screens write numbers from Home Assistant in the chosen format, and every text font carries the apostrophe.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 14:35:37 +02:00