feat(rail): add a Rail layer with keyless live trains

Live trains from 30 keyless operator feeds: GPS positions from 29 and
Irish Rail's station reports, shown as the operators publish them. 28
work out of the box; Renfe long and medium distance and KTMB appear once
their pack is built, because their vehicles name no route.

Packs are opt-in (scripts/build-rail-paths.mjs): the operator's own
route lines, stop names, next stops and trip-update delays for live
trains. Nothing downloads when the app starts, no train is placed from a
timetable, and no request carries a deployer's key.
This commit is contained in:
Denis Groshev committed 2026-11-11 16:06:22 +01:00
1 parent 14db73f201
commit 830c080803
114 files changed
+26639 -26

No files matched your search

+15
View File
@@ -3452,6 +3452,21 @@
"Play speed": "Wiedergabegeschwindigkeit",
"Scroll or pinch to zoom, drag to move along · double-click to see it all": "Scrollen oder mit zwei Fingern zoomen, ziehen zum Verschieben · Doppelklick zeigt alles",
"1 min/s": "1 Min./s",
"Rail": "Bahn",
"Urban rail": "Stadtverkehr",
"Local rail": "Nahverkehr",
"Regional rail": "Regionalverkehr",
"National rail": "Fernverkehr",
"International rail": "International",
"Hide {category}": "{category} ausblenden",
"Show {category}": "{category} einblenden",
"Live GPS": "Live-GPS",
"Estimated from station reports": "Geschätzt aus Bahnhofsmeldungen",
"To {headsign}": "Nach {headsign}",
"Next {stop} {time} {relative}": "Nächster Halt {stop} {time} {relative}",
"Prev {stop} {time} {relative}": "Letzter Halt {stop} {time} {relative}",
"(+{minutes} min late)": "(+{minutes} min Verspätung)",
"Exit cockpit to fly to a train": "Cockpit verlassen, um zu einem Zug zu fliegen",
"Photo © {photographer}": "Foto © {photographer}",
"The shared flight isn't reporting now — showing where it was last seen": "Der geteilte Flug sendet gerade nicht – letzte bekannte Position wird gezeigt",
"The shared flight isn't reporting now — showing where it was at {time}": "Der geteilte Flug sendet gerade nicht – Position um {time} wird gezeigt",