fix(i18n): Contacts panel text and distances in the UI language

The Contacts panel builds its markup in a variable before innerHTML, so
the unmarked-text check missed it: the window caption, "Named areas", the
"at least" count and each cohort's reason stayed English, and distances
read "4.6 km" in every language.

The reason stays English in the cohort summary, which the voice analyst
reads too; it now also carries its template, and the panel shows it in
the UI language. Distances and counts use the locale's number format
and unit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
German KhokhlovandClaude Opus 5.5 committed 2026-10-13 23:36:30 +04:00
1 parent 03207ca0fc
commit 896952c085
5 files changed
+79 -23

No files matched your search

+8 -1
View File
@@ -2075,5 +2075,12 @@
"Trance": "Trance",
"World": "Músicas del mundo",
"{speed}KT": "{speed} KN",
"{heading}DEG": "{heading}°"
"{heading}DEG": "{heading}°",
"At least {count}": "Al menos {count}",
"Named areas ({n})": "Zonas con nombre ({n})",
"{distance} FLIGHT / VESSEL WINDOW": "VENTANA DE VUELOS / BUQUES DE {distance}",
"mapped matches within {km} km of the subject": "coincidencias mapeadas a menos de {km} km del objetivo",
"none mapped within {km} km; not a complete 250 km survey": "ninguna mapeada a menos de {km} km; no es un barrido completo de 250 km",
"mapped matches from the loaded viewport": "coincidencias mapeadas en la vista cargada",
"viewport feed is not a complete 250 km survey": "los datos de la vista no son un barrido completo de 250 km"
}
+8 -1
View File
@@ -2107,5 +2107,12 @@
"Trance": "Транс",
"World": "Музыка мира",
"{speed}KT": "{speed} УЗ",
"{heading}DEG": "{heading}°"
"{heading}DEG": "{heading}°",
"At least {count}": "Не менее {count}",
"Named areas ({n})": "Именованные зоны ({n})",
"{distance} FLIGHT / VESSEL WINDOW": "ОКНО РЕЙСОВ / СУДОВ {distance}",
"mapped matches within {km} km of the subject": "совпадения на карте в радиусе {km} км от объекта",
"none mapped within {km} km; not a complete 250 km survey": "на карте нет в радиусе {km} км; это не полный обзор 250 км",
"mapped matches from the loaded viewport": "совпадения на карте в загруженной области",
"viewport feed is not a complete 250 km survey": "данные видимой области — не полный обзор 250 км"
}