Merge upstream/main: air-quality layer (AQHI) meets i18n

Upstream's #568 adds the Air quality layer to the Weather group (ECCC
AQHI, Canada only) with a band legend, worst-first list and voice
support.

- package-boundaries: both sides' entries unioned.
- layerPanel/weatherPanel tests: both sides' new tests kept; the
  weatherPanel fixture follows upstream (legendCategorical: true, the
  'list' block id) while our localized-history (K-6) test stays.
- air-quality strings marked: band labels and the provider label as
  msg() data, the readings-list aria-label through t(); es/ru entries
  added (+6 keys each).
- The synthetic air-quality allocation-benchmark titles follow the
  file's own convention (// i18n-ignore) like TRK/VESSEL/CAMERA.

Also verified the auto-merged weatherPanel.js against upstream: ORDER
gains 'air-quality', OBSERVED stays slice(2, 5), and the data-driven
legendCategorical path is upstream's.

npm run i18n: complete (2559), no unmarked strings. npm test: only the
pre-existing environmental OPENAI_API_KEY leak fails. Build passes.
This commit is contained in:
Meir Michanie committed 2026-10-15 23:16:24 +02:00
commit f3da0916d9
38 files changed
+2061 -62

No files matched your search

+6
View File
@@ -2779,6 +2779,12 @@
"FILTER": "FILTRO",
"Cloud filter strength": "Intensidad del filtro de nubes",
"Panoramax answered HTTP {status}": "Panoramax respondió HTTP {status}",
"Highest air-quality readings in view": "Lecturas de calidad del aire más altas a la vista",
"Low": "Baja",
"Moderate": "Moderada",
"High": "Alta",
"Very High": "Muy alta",
"Air quality": "Calidad del aire",
"{n} sequences in view · click a line for its nearest photo": {
"one": "{n} secuencia a la vista · haz clic en una línea para su foto más cercana",
"many": "{n} secuencias a la vista · haz clic en una línea para su foto más cercana",
+6
View File
@@ -2836,6 +2836,12 @@
"FILTER": "ФИЛЬТР",
"Cloud filter strength": "Сила фильтра облаков",
"Panoramax answered HTTP {status}": "Panoramax ответил: HTTP {status}",
"Highest air-quality readings in view": "Наивысшие показатели качества воздуха в поле зрения",
"Low": "Низкий",
"Moderate": "Умеренный",
"High": "Высокий",
"Very High": "Очень высокий",
"Air quality": "Качество воздуха",
"{n} sequences in view · click a line for its nearest photo": {
"one": "{n} съёмка в кадре · щёлкните линию, чтобы открыть ближайшую фотографию",
"few": "{n} съёмки в кадре · щёлкните линию, чтобы открыть ближайшую фотографию",