- Fix meaning errors flagged by the three-model review: downed aircraft
(Аварія літака), fast jet, the straight-ahead lane, road traffic,
pilot vessel, nearby contact counts, the low-accuracy score.
- Terms: CRS/TRK → ШК (шляховий кут), ascent → виведення, booster
flight → ПОЛІТ, session → сеанс, sequence → послідовність, place
search → пошук місця, CCTV pitch → нахил, mapped sites →
нанесені обʼєкти everywhere; glossary updated.
- Grammar: case agreement in the radio aria label and the key-store
message, «прицілу», у/в euphony, payload count after a colon,
FIRES as ПОЖ. so any count reads correctly.
- The cockpit current-style button widens to fit ЗВИЧАЙНИЙ; other
languages keep the 58px minimum.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Three-model review (astra, sol, fable): 53 findings accepted, 14 rejected
or deferred. Fixes the meaning of "Downed aircraft", "Compilation", the
satellite ground-distance caveat and the browser-key restriction note;
agreement for Full, Provider Settings and Space Missions; fork directions
that compose with every modifier; a radio aria label that reads as a
phrase; imperative tooltips. Shortens the labels that clipped: ESP. A/B,
search placeholder, QUOTA · FT, PREC, Esri imagery note.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Apply the accepted findings from the three-model French review: ground
track reads « route », wildfire containment « circonscrit », downrange
« distance au sol », tankers « navire-citerne », plus wording fixes for
lanes, timestamps, wind sector, radio, CCTV and voice strings.
Shots rebuilt by a pack's legacy bootstrap carry no sourcePackId, so the
first Nepal shot titles stayed English; the scene's applied-pack marker
now vouches for the pack's required titles.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Layer rows read «не оновлювалося» for a feed that never updated, not
«ніколи».
- The dock voice toggle label fits on one line (ПЕРЕМК.), the cockpit
briefing title (НОВИНИ РЕГІОНУ) no longer truncates, Celestial is «Небо».
- No-break spaces keep «24 год», «30 дн» and coordinate abbreviations
(пн. ш., зх. д.) on one line.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The Global Context panel and its buttons set ui-monospace through the `font`
shorthand, so Arabic fell back to a fixed-pitch face with letters spaced
apart. In Arabic they use the Arabic-aware mono stack.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- "never" in a layer row reads لم يُحدَّث (not updated), not أبدًا.
- Space Missions (30 يومًا) and Earthquakes (24 ساعة) keep their
parenthesis together with a no-break space instead of wrapping inside it.
- VS BASEMAP is مقابل الخريطة, short enough for its segment.
- The voice pointer label THIS is هذا; two leftover حي (live) become مباشر.
- Latin provider names in Street Level hints lose their «» quotes.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A container that only holds a translate="no" span (a provider name in the
Global Context lines) kept its tracking and tore its own Arabic text into
separate glyphs. Only the Latin span itself keeps its letter-spacing now.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Labels that ran out of their buttons: EXPORT / EXPORT A stay English
(EXPORTIEREN was cut to EXPORTI…), the imagery mode reads VGL. KARTE,
the scene run log PROTOKOLL (it broke as LAUFPROTOKOL/L), the dock voice
status SPRACHE N. V., and the Esri imagery note fits its line.
- The cyclone layer is Sturmwarnungen (no hyphenated break in the layer
list); Erdbeben (24 h) matches the other hour readouts; retry countdowns
get a space before s; the Mapillary hint names the Straßenebene layer.
- The cyclone source's timeout and malformed-snapshot errors were plain
English in every language: mark them like the wind source does and
translate them in de, es, ru, zh-CN and zh-Hant.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Shorter layer and segment labels that wrapped or broke mid-word in the
narrow panels: ALPRカメラ, 宇宙ミッション 30日, 地図と比較, 対象.
- Window readouts put the value after the label (空/海ウィンドウ 250 km),
so a unit never runs into Japanese text.
- 情勢図 for the GhostMaps intel picture; Googleストリートビュー joined like
any Latin product name in the guide.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
cjk.css now covers Japanese as well as Chinese: tight tracking, the 9px
floor on dock voice labels and layer buttons, whole travel-mode and preset
labels, catalog-case units in the HUD and the taller Recent Imagery cards.
Japanese also gets strict line breaking (no line starts with ー or a small
kana) and unbroken segment labels (すべて, 平面). Chinese rendering is
unchanged: :is(:lang(zh), :lang(ja)) keeps the :lang(zh) specificity.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- The cockpit news kicker no longer cuts off: regional news reads «notícias
locais», the cycle button «CICLO DESLIG.», the subtitle «ÚLTIMAS NOTÍCIAS
DO LOCAL».
- Contact header fits in two lines («AR/MAR 250 KM · INSTALAÇÕES: ATÉ
100 KM»); ground speed reads KT like the rest of the HUD.
- A space between a number and s/h/d («nova tentativa em 30 s», «há 5 h»),
and «aproxime-se de uma rua» for zoom-to-street hints.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Shorter wording where the French text ran out of its button, chip or
collapsed card at 1600×1100: the DATA LAYERS launcher (COUCHES), Recent
Imagery buttons and hints (CETTE VUE, VS CARTE, EXP. A), the ENABLING /
DISABLING layer chip, the voice detail line and the location search
placeholder. Also the CCTV range readout gets a space before m, the radio
privacy note reads naturally, and the cockpit air/sea window is shorter.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
From the screenshot review: the Recent Imagery buttons (SELEZIONA, USA
VISTA, VS MAPPA BASE) no longer clip or wrap, the layer state chip reads
AVVIO / ARRESTO so a layer name keeps two lines, the cockpit contact header
fits two lines (ARIA/MARE, SITI), and the Bhote Koshi play buttons fit on one
line (AVVIA). The post-event year follows the label, as the reference one does.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Fixes from the Arabic screenshot review:
- t() isolates every interpolated value in RTL locales (U+2068…U+2069), so
a time (10/28 09:00 UTC), a code or an English name keeps its order inside
an Arabic sentence; coordinates (30.326° ش) are isolated too. No-op in
left-to-right languages.
- The cockpit position readout reads right to left again now that its
coordinates are isolated; gauges, tapes and roll counters stay LTR.
- The start window's arrows point along the reading direction; FM seek and
the glyph-only mini transport stay left to right, the worded PREV / PLAY /
NEXT row follows the page; the Bhote Koshi clock stays a number.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The draw hint picked m², ha or km² from the raw area and then rounded,
so 9,999.5 m² up to a hectare read "10000 m²" and about 999,500 m² up
to a square kilometre read "100.0 ha". It now rounds first, as the line
measure already does.
The selected ALPR card rounded a mapped camera:direction without
wrapping, so a camera facing 359.5° or more read "DIRECTION 360°". The
rounded bearing now wraps to 0°.
The selected-vehicle card rounded the operator's reported bearing without
wrapping, so a GTFS-Realtime vehicle heading 359.5° or more read
"reported hdg 360°". The card now wraps after rounding: 359.6° reads
"reported hdg 0°", 359.4° still reads "reported hdg 359°".
The CCTV HUD heading token and the camera panel's meta line rounded the
bearing without wrapping, so a camera facing 359.5° or more (a feed
bearing, or a heading calibrated just west of north) read "HDG 360°".
Both now wrap after rounding: 359.6° reads "HDG 0°", 359.4° "HDG 359°".
- docs/translations/ar.md: style, Western digits and direction, units,
the six plural forms and the glossary.
- TRANSLATORS.md and CURRENT-STATE.md list Arabic and say how a
right-to-left language mirrors the chrome.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- The title, style indicator and both rails swap sides in RTL through logical
properties (inset-inline-*, margin-inline-*, border-inline-start); LTR
computes the same values. The Display/Context rail keeps its physical
`right` for the credit-clearance model and swaps in rtl.css above 720px.
- rtl.css: no letter-spacing on Arabic (it tears joined letters apart);
Noto Sans Arabic leads the Arabic font stacks so words are not set in a
fixed-pitch fallback; the intel HUD and cockpit instruments stay a
left-to-right instrument overlay; media transport and the radio dial stay
left to right; feed headlines and station names take their own direction;
the moved rail's arrows flip.
- isolate(): a quantity in RTL text (2.7 كم, -18.0°) is wrapped in
first-strong isolates so its digits do not join a neighbouring Latin run.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Register fr: catalog in CATALOGS, LOCALES and LOCALE_NAMES (Français);
any fr-* browser tag (fr-CA, fr-BE, fr-CH) maps to it.
- package-boundaries.json lists fr.json next to the other catalogs.
- Picker and locale tests cover the new row and its local names.
- docs/translations/fr.md: style, typography, plurals and glossary;
TRANSLATORS.md and CURRENT-STATE.md list French as shipped.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Translate the remaining 1,865 strings: aviation, maritime (AIS), weather
and remote-sensing terms, radio, routing, scenes, voice and setup.
- Review the 862 entries from #907: LIVE becomes DIRECT / en direct, stale
becomes obsolète, FIRMS detections are feux actifs, replay is rejeu, the
AIS ship types use the French terms (PILOTINE, SERVITUDE, POLICE), keys
stay Space / Esc / Enter as docs/TRANSLATORS.md asks, and NEXT/PREVIOUS
chips match PREV (SUIV. / PRÉC.).
- French typography: narrow no-break space before : ; ? ! and %, inside
« », and … for ellipsis; plural entries get the many form (exact
millions, "de").
- same-as-english.json: codes, units, genre and product names that French
spells the same as English.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Register ja: CATALOGS, LOCALES, LOCALE_NAMES (日本語) and the package
boundaries; ja and ja-JP tags select it.
- Japanese unit words follow the number directly, as in the catalog:
formatQuantity writes 5分 and 1時間5分 (km and kt keep the space), and
formatRelativeTime drops the space CLDR puts in 5 分前.
- Tests: locale tags, picker order, Intl output, durations and the
ramp/exit/lane wording in Japanese.
- docs/translations/ja.md: style, units, plurals and glossary; ja added to
TRANSLATORS.md and CURRENT-STATE.md.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Translate the 1,875 strings #913 did not cover (2,727 in all), for a
tactical HUD: aviation, maritime, weather and imagery terms, counters
next to numbers (機, 隻, 基, 件), year-first dates.
- Review the contributor entries: full-width punctuation ():? and …,
no space between Japanese and Latin, one katakana form per term
(ブラウザー, ビューアー), and fixes where the meaning was off:
NO PLACE LEFT BEHIND, LEVEL (horizon), CURATED / RAW PRIOR (CCTV
calibration), STALE (更新遅延, not 古い), rocket stage (段), SAR vessels,
T minus, POWER UP.
- List the codes, units and product names that stay as in English.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Translate the remaining 1,895 strings for the current UI (Bhote Koshi
event, weather, imagery, street level, directions, SDR, voice, scenes,
import) and review meirm's 832 entries from #312: 134 edited for
Ukrainian HUD terms (КУРС/ПЕЛ./ШЛЯХ/ПРИЗН., Л/П, ОНЛАЙН for LIVE,
Cyrillic units КМ, ВУЗ, ФТ, МВт), vessel types, number agreement and
the ʼ apostrophe throughout.
- Register uk: catalog, LOCALES, LOCALE_NAMES (Українська), package
boundaries, same-as-English codes; picker and plural tests cover the
four Ukrainian forms.
- docs/translations/uk.md: style, plurals, units and glossary.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Add ar to LOCALES (picker name العربية) and RTL_LOCALES, so <html dir>
turns rtl; any ar-* tag maps to it.
- Intl formatters get ar-u-nu-latn: numbers and dates keep Western digits
like the catalog, whatever the browser's ICU picks for Arabic regions.
- HUD quantities keep a space before an Arabic unit (2069.0 كم), as in
Chinese, instead of running digits into the word.
- Codes and product names that stay Latin go to same-as-english.json.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Translate the 1,875 strings #915 did not cover (2,727 in all), with all
six CLDR plural forms where tn() asks for them.
- Review pass on the #915 entries: LIVE reads مباشر (not حي, "alive"),
STALE reads متقادم, ON/OFF pair as مفعّل/متوقف; distances and speeds use
Arabic units (كم، م، قدم، عقدة) instead of Latin KM/FT/KTS; HUD stays HUD;
quotes are «» and a few clumsy count phrasings are rebuilt.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Translate the remaining 1,868 strings in a neutral infinitive style (no
Sie/du), with German compounds, decimal commas and CLDR one/other plurals.
- Review the #908 entries: knots are kn everywhere, the avionics codes BRG,
CRS and DEST stay English like HDG and SPD, expand/collapse is
ausklappen/einklappen, the radio toggle reads EIN/AUS, density SPARSE is
DÜNN, the Thermal style is Wärmebild, German quotes in the shot prompt.
- Register de: catalog, LOCALES, LOCALE_NAMES (Deutsch), package boundaries,
same-as-english (codes, product names, music genres, units).
- Tests: picker order and keyboard model with Deutsch, de/de-AT/de_CH
normalization, browser de-DE resolves to German.
- docs/translations/de.md: style, plurals, units and glossary; TRANSLATORS.md
and CURRENT-STATE.md list German.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Translate the remaining 1,868 strings (pt-BR, as in #909) and review the
contributor entries: HUD codes BRG/SPD/RANGE stay as in the other
languages, sentence-case layer and scene names, Space key named as on the
keyboard, short PREV/NEXT/ON/OFF chips, and the CLDR many form (exact
millions take «de») on every plural.
- Register pt: any pt tag (pt-BR, pt-PT) maps to it; the picker shows
«Português (Brasil)».
- Codes, units and product names identical to English go to
same-as-english.json.
- docs/translations/pt.md: style, plurals, units and glossary.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Register it: catalog in index.js, LOCALES and LOCALE_NAMES (Italiano);
it-IT, it-CH and other it tags select it.
- List it.json with the other catalogs in package-boundaries.json.
- docs/translations/it.md: style, plurals and glossary; Italian in the
shipped lists of TRANSLATORS.md and CURRENT-STATE.md.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Translate the 1,868 strings #912 does not cover: directions, weather and
wind, cyclones, Recent Imagery, Street Level, GNSS, the Bhote Koshi
reconstruction, scenes and sharing, local SDR, voice and key setup.
- Add the Italian `many` plural form (exact millions) to every plural entry.
- Review the #912 entries: fix RIMORCHIATORE, POWER UP (ACCENDI), DENSO,
minutes as "min", sentence case for layer and scene names, keyboard keys
kept in English (Space, Enter), and the SIG/NOTIZIE/LOCALE tab names.
- List codes, product names and words Italian spells as English in
same-as-english.json.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The German locale by abiyeenzo (#908), converted from its namespaced JS
catalogs to the English-keyed de.json: 859 entries whose English still
matches the current UI.
The French locale by abiyeenzo (#907), converted from its namespaced JS
catalogs to the English-keyed fr.json: 862 entries whose English still
matches the current UI.
The Brazilian Portuguese locale by abiyeenzo (#909), converted from its
namespaced JS catalogs to the English-keyed pt.json: 859 entries whose
English still matches the current UI.
The Arabic locale by abiyeenzo (#915), converted from its namespaced JS
catalogs to the English-keyed ar.json: 852 entries whose English still
matches the current UI.
The Ukrainian locale by meirm (#312), converted from its namespaced JS
catalogs to the English-keyed uk.json: 832 entries whose English still
matches the current UI.
The Japanese locale by abiyeenzo (#913), converted from its namespaced JS
catalogs to the English-keyed ja.json: 852 entries whose English still
matches the current UI.
The Italian locale by abiyeenzo (#912), converted from its namespaced JS
catalogs to the English-keyed it.json: 859 entries whose English still
matches the current UI.
Correct 年曆史 → 年歷史, 下遊 → 下游, 並道 → 併道 and 發佈 → 發布,
and list these fixes for future reconversions from zh-CN.
Co-Authored-By: Claude Opus 5.5 <[email protected]>