feat: finish ES/FY localization, fix eAIP URLs, add aircraft registers #13

Merged
brenno merged 2 commits from feat/aircraft-list-search into main 2026-06-19 17:51:28 +00:00
Owner

Summary

Three features plus previously staged branch work, all green (flutter analyze clean, full suite passing).

Localization (ES + West Frisian)

Added Spanish and West Frisian to every per-screen detail copy that previously fell back to English: weather, NOTAM, SNOWTAM, AIP charts & settings, openAIP field view, briefing summary, diagnostics and map settings. The 8 UI languages now cover the detail screens, not just the main screen.

eAIP chart URLs (live-verified)

Repaired broken national eAIP links, each re-checked with curl:

  • PL -> docs.pansa.pl (AD 2 {ICAO} 1 filename style)
  • PT -> cycle-less wp-content path with -en-PT
  • Kosovo -> host moved to kans-ks.org, underscore date folder
  • Moved ES (PDF-only), LT (dead host), BG/HR/SI/SK (JS portals) and RO/FI/IS (aerodrome name in filename) to portal-only — no stable per-ICAO HTML AD 2 page.
  • IE and NL/BE left unchanged (IE old path still serves content; NL/BE 403 here is WAF, not a wrong URL).

Aircraft registers (tail-number lookup)

  • Real downloadable registers: US (FAA), CA (Transport Canada CCARCS), AU (CASA), NO (Luftfartstilsynet).
  • Restricted-info stubs (recognise the mark, link to the authority) for BE/FR/GB/CH/FI, where no free bulk download exists. Finland's open data turned out to be a type-acceptance list without individual OH- registrations, hence a stub.
  • Prefix->country routing centralised in aircraftRegistrationPrefixes as the single source of truth shared by the repository and the UI.
  • Note: the FAA register is ~73 MB; fetched on demand with a 30-day cache, never prefetched.

Also bundled

Previously staged branch work: app-wide distance unit, aircraft route repository, map preference persistence.

🤖 Generated with Claude Code

## Summary Three features plus previously staged branch work, all green (`flutter analyze` clean, full suite passing). ### Localization (ES + West Frisian) Added Spanish and West Frisian to **every** per-screen detail copy that previously fell back to English: weather, NOTAM, SNOWTAM, AIP charts & settings, openAIP field view, briefing summary, diagnostics and map settings. The 8 UI languages now cover the detail screens, not just the main screen. ### eAIP chart URLs (live-verified) Repaired broken national eAIP links, each re-checked with `curl`: - **PL** -> `docs.pansa.pl` (`AD 2 {ICAO} 1` filename style) - **PT** -> cycle-less `wp-content` path with `-en-PT` - **Kosovo** -> host moved to `kans-ks.org`, underscore date folder - Moved **ES** (PDF-only), **LT** (dead host), **BG/HR/SI/SK** (JS portals) and **RO/FI/IS** (aerodrome name in filename) to **portal-only** — no stable per-ICAO HTML AD 2 page. - **IE** and **NL/BE** left unchanged (IE old path still serves content; NL/BE 403 here is WAF, not a wrong URL). ### Aircraft registers (tail-number lookup) - Real downloadable registers: **US** (FAA), **CA** (Transport Canada CCARCS), **AU** (CASA), **NO** (Luftfartstilsynet). - Restricted-info stubs (recognise the mark, link to the authority) for **BE/FR/GB/CH/FI**, where no free bulk download exists. Finland's open data turned out to be a type-acceptance list without individual OH- registrations, hence a stub. - Prefix->country routing centralised in `aircraftRegistrationPrefixes` as the single source of truth shared by the repository and the UI. - Note: the FAA register is ~73 MB; fetched on demand with a 30-day cache, never prefetched. ### Also bundled Previously staged branch work: app-wide distance unit, aircraft route repository, map preference persistence. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Localization: add Spanish (ES) and West Frisian (FY) to every per-screen
detail copy (weather, NOTAM, SNOWTAM, AIP charts/settings, openAIP field,
briefing summary, diagnostics, map settings); these previously fell back to
English. README and language note updated.

eAIP charts: live-verified URL repairs. PL -> docs.pansa.pl (AD 2 {ICAO} 1
filename style), PT -> cycle-less wp-content path with -en-PT, Kosovo -> host
moved to kans-ks.org with underscore date folder. Moved ES (PDF-only), LT (dead
host), BG/HR/SI/SK (JS portals) and RO/FI/IS (name-in-filename) to portal-only
since they no longer expose a stable per-ICAO HTML AD 2 page. IE and NL/BE left
unchanged (IE old path still serves content; NL/BE 403 is WAF, not a bad URL).

Aircraft registry: real tail-number lookup for US (FAA Releasable DB),
CA (Transport Canada CCARCS), AU (CASA) and NO (Luftfartstilsynet), plus
restricted-info stubs for BE/FR/GB/CH/FI where no free bulk download exists.
Prefix->country routing centralised in aircraftRegistrationPrefixes as the
single source of truth shared by the repository and the UI; normalize handles
hyphen-less US marks.

Also includes previously staged branch work: app-wide distance unit,
aircraft route repository, and map preference persistence.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
OurAirports keeps the official ICAO in the icao_code/gps_code columns; the
ident column is sometimes a placeholder (NL-0024) or an FAA-style local code
(LR80, K61B). The bundled generator and the runtime live-refresh parser both
keyed the ICAO off ident only, silently dropping fields such as EHMM
(Middenmeer) and EHLV, and even leaking 352 bogus placeholder entries whose
<ISO>- prefix collided with a real ICAO region (ES=Sweden, BG=Greenland,
LT=Turkey, EE=Estonia).

Both now resolve the ICAO as ident-if-it-is-a-real-4-letter-code else
icao_code else gps_code, de-duped, and add the German military ET prefix. Only
the intentional Liechtenstein LI- local code is kept. Bundled dataset 4218 ->
4136 (garbage placeholders removed/resolved). Regression test covers
NL-0024->EHMM, BG-0013->LBDM, LR80->LRFT; two widget tests made robust to the
denser nearby-field set.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit 4bbe37f149 into main 2026-06-19 17:51:28 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
brenno/Hiero!13
No description provided.