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
@@ -3533,6 +3533,21 @@
"Play speed": "Velocidade de reprodução",
"Scroll or pinch to zoom, drag to move along · double-click to see it all": "Role ou faça pinça para ampliar, arraste para se mover · clique duplo para ver tudo",
"1 min/s": "1 min/s",
"Rail": "Ferroviário",
"Urban rail": "Urbano",
"Local rail": "Suburbano",
"Regional rail": "Regional",
"National rail": "Longo curso",
"International rail": "Internacional",
"Hide {category}": "Ocultar {category}",
"Show {category}": "Mostrar {category}",
"Live GPS": "GPS ao vivo",
"Estimated from station reports": "Estimada a partir dos registros das estações",
"To {headsign}": "Para {headsign}",
"Next {stop} {time} {relative}": "Próxima parada {stop} {time} {relative}",
"Prev {stop} {time} {relative}": "Parada anterior {stop} {time} {relative}",
"(+{minutes} min late)": "(+{minutes} min de atraso)",
"Exit cockpit to fly to a train": "Saia da cabine para voar até um trem",
"Photo © {photographer}": "Foto © {photographer}",
"The shared flight isn't reporting now — showing where it was last seen": "O voo compartilhado não está transmitindo agora — mostrando a última posição conhecida",
"The shared flight isn't reporting now — showing where it was at {time}": "O voo compartilhado não está transmitindo agora — mostrando onde estava às {time}",