i18n(pt): apply review round 2

Three-model review (astra, sol, fable), round 2: 29 of 30 findings
applied, one of them in part.

- pt: FIRMS «mais recente há», CCTV «cruzamentos», degraded radio
  directory, «{layers}: ativação recente» for any layer list, «Sem
  imagem», NIVELADO, AJUSTA-SE, quoted Provider Settings, V/S kept on
  the ADS-B card, no-break space in «(24 h)» / «(30 d)», and more
  (see docs/translations/pt.md).
- Malformed cyclone snapshot is now a catalog message (all locales).
- Markup supports data-i18n-context; the radio STATION TAG option uses
  "radio tag|All", so it no longer flips gender when the list loads.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
German KhokhlovandClaude Opus 5.5 committed 2026-10-28 17:57:51 +04:00
1 parent 3c0c10d3b1
commit 858ce827e5
13 files changed
+79 -46

No files matched your search

+5 -2
View File
@@ -125,8 +125,11 @@ export function extractMessages() {
const html = readFileSync(path.join(ROOT, file), 'utf8');
for (const [, tag, attrs, text] of html.matchAll(TAG)) {
const where = `${file} <${tag}>`;
if (/\sdata-i18n(\s|=|$)/.test(attrs))
add(normalize(decodeHtml(text)), where);
if (/\sdata-i18n(\s|=|$)/.test(attrs)) {
const context = attrs.match(/\sdata-i18n-context="([^"]*)"/);
const message = normalize(decodeHtml(text));
add(context ? `${decodeHtml(context[1])}|${message}` : message, where);
}
for (const [, name] of attrs.matchAll(
/\sdata-i18n-(title|aria-label|placeholder)\b/g,
)) {