From e236dca48653d9e31515daf042dcc9697b477983 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Thu, 17 Sep 2026 18:50:59 +0200 Subject: [PATCH] =?UTF-8?q?REPORT:=20localisation=20slice=201=20(R-556)=20?= =?UTF-8?q?=E2=80=94=20releases=20A,=20B,=20C,=20per-page=20table,=20red-p?= =?UTF-8?q?roofs,=20live=20evidence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS --- REPORT.md | 175 +++++++++++++++++++++++++++--------------------------- 1 file changed, 88 insertions(+), 87 deletions(-) diff --git a/REPORT.md b/REPORT.md index 4f3b363..7cdb268 100644 --- a/REPORT.md +++ b/REPORT.md @@ -1,109 +1,110 @@ -# REPORT — controller v0.247.0: the i18n spike — English on three pages, Hungarian byte-identical +# REPORT — localisation slice 1 (R-556): the whole dashboard in English, Hungarian byte-identical -**Date:** 2026-09-17 · **Task:** localisation starter (spike + design), Phase 1 · **Baseline:** `main` -`89dd3e94b1de` (v0.246.0, MinAgent 0.131.0) · **Released:** `612c417` → image -`gitea.dooplex.hu/admin/felhom-controller:0.247.0` · **MinAgent:** 0.131.0 (unchanged). -**Architecture read before any claim:** `felhom.eu/documentation/architecture/02-controller-module-map.md` -(templates, setup wizard obsolete) and `05-hub-architecture.md` (report ingestion, config push). -**Design written after the spike ran:** `felhom.eu/documentation/architecture/10-localisation.md`. -**Inventory:** `felhom.eu/documentation/audits/I18N-INVENTORY-2026-09-17.md`. +**Date:** 2026-09-17 · **Releases:** v0.248.0 (`ff68b0b`, apps and settings), v0.249.0 (`11b790e`, backups), +**v0.250.0** (`ac149c2` + `be2efe5`, storage, sharing, sign-in, guest, catch-all, debug, the switch for +everyone) · **MinAgent:** 0.131.0 (unchanged) · **Baseline of the slice:** v0.247.0. +**Architecture read before any claim:** `felhom.eu/documentation/architecture/10-localisation.md` +(updated: §2.2, §2.3, §3 decision 6 SUPERSEDED, §5, §10, §11), `02-controller-module-map.md`. +**Evidence:** `felhom.eu/documentation/audits/i18n-slice1-2026-09-17/{A,B,C}/`. -## Claims in the brief that turned out wrong — named first +## Claims in the prompt that turned out wrong — named first -The brief named four already. Further ones (details and methods in the inventory §0): +1. **Per-page Hungarian line counts** did not reproduce (debug 92 accented lines, not 103; monitoring 48, + not 72; others differ the same way). +2. **Marker counts of the v0.247.0 pages** — measured layout 105, backups 59, app_info 58, launcher 28; + the prompt said 95 / 52 / 48 / 25. +3. **"Templates decide nothing by Hungarian wording"** is false: `backups_remote.html` runs + `indexOf('Fut')` on its own status text. The prompt's sweep checked only `==`, `===` and `case`. + The word stays Hungarian (R-563). +4. **The list of unconverted copy omitted `backups_shared` `restore_banner_js`** — it was still + Hungarian after v0.247.0; converted in B. +5. **"Six direct-render pages"** — confirmed, not wrong: login, claim, recovery, launcher_shared, + launcher_share_password, catchall. No seventh `s.tmpl` render exists now. -1. **„`fmtTime`, `fmtBytes`, `timeAgo` do not exist; `fmtMB` is the one size helper"** — all three - exist (`internal/web/funcmap.go` L265/L318/L403), plus nine more copy- or locale-producing helpers - and four size helpers. `timeAgo` builds „%d perce" — the plural problem lives there. -2. **„`fmtMB` used 10× in templates"** — 8×. -3. **„~13 `.Format(` layout calls in `internal/web`"** — 10 at the baseline (plus 8 `time.RFC3339`). -4. **Template lines 1 613 / 1 838** — 1 553, by two methods; neither figure reproduced by four variants. -5. **Go literals 1 234 in 99 files** — 1 141 in 84 (a lexer, comments skipped); comments explain most of - the difference. -6. **Banner 33 lines** — 34 once ASCII-only Hungarian words count (method difference). +## Per-page table — all 31 templates -## What shipped +Markers = `{{T}}` occurrences today. States = parity fixture cases rendering the page (captured from the +unconverted template first). -- **Mechanism (b), expanded at template LOAD:** `internal/i18n` (`Bundle`, `Expand`, `Msg`, `Plural`, - embedded `locales/hu.json` + `en.json`). `loadTemplates` parses one template set per language via - `parseTemplateSet` (= `ParseFS` + `Expand`); `s.tmpl` stays Hungarian. Why not a runtime `T` func: the - escaper changes `+ ' "` bytes and 618 of 1 867 template strings are inside `