Files
mc-webui/app
MarekWoandClaude Opus 5 cd9a3cb397 feat(i18n): translate the remaining base.html modals (stage 7b)
Manage Channels, region scope picker, Share Channel, Device Info,
analyzer registry (edit + chooser), Observer MQTT broker editor,
coordinate picker, quote dialog, map, update, backup and search.

The Settings modal (base.html ~458-1147) is still untouched - stage 8.
Where the two share markup, this commit anchors on the container id
rather than the markup: the "Loading..." spinner appears six times in
base.html and only three of them are in this slice.

Also in app.js, on the same rule as 7a - the writer that replaces a
string this slice keyed: the analyzer and broker modal titles (they
swap Add/Edit on open), the map modal title, the coordinate picker
label, and the database size line under Optimize.

Three real misses came out of the browser diff, none of which the
checker could see:

- Cancel/Save in the analyzer and broker editors were never keyed. They
  only surfaced once because the diff dedupes by text, so a single
  report line stood for both modals.
- The database size under Optimize is written by JS on open, so the
  translated server-rendered value was replaced a moment later.
- All three Device Info tabs render their bodies from app.js. Excluded
  from the check and left whole for stage 9 rather than translating the
  Share tab alone.

Left English on purpose: FTS5 query examples (hello OR world, hell*) -
the syntax is typed verbatim in any language, only what each one means
is translated - plus mqtt.example.com and the {packetHash} token.

Catalog: 573 -> 651 keys, pl at 100%. Verified with a new
i18n-stage7b-modals.js that opens each modal through the Bootstrap API
instead of its real trigger, since several are only reachable from a row
or message that may not exist on a given device.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 09:54:02 +02:00
..