mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
add roadtrip warning areas and tidy driving settings
This commit is contained in:
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'عرض مناطق الخطر',
|
||||
'roadtrip.hazards.current': 'التحذيرات الحالية',
|
||||
'roadtrip.hazards.note': 'التحذيرات لا تعني إغلاق الطرق. يبقى المسار دون تغيير.',
|
||||
'roadtrip.hazards.point': 'الموقع فقط؛ المنطقة المتأثرة غير معروفة.',
|
||||
'roadtrip.hazards.loading': 'جارٍ تحميل التحذيرات…',
|
||||
'roadtrip.hazards.unavailable': 'غير متاح',
|
||||
'roadtrip.hazards.offline': 'دون اتصال: التحذيرات الحالية غير متاحة',
|
||||
'roadtrip.hazards.partial': 'تغطية محدودة',
|
||||
'roadtrip.stops.section': 'توقفات الخدمة',
|
||||
'roadtrip.stops.inDays': 'إظهارها في الأيام أيضًا',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Mostrar áreas de risco',
|
||||
'roadtrip.hazards.current': 'Alertas atuais',
|
||||
'roadtrip.hazards.note': 'Alertas não são interdições de vias. A rota não muda.',
|
||||
'roadtrip.hazards.point': 'Apenas localização; área afetada desconhecida.',
|
||||
'roadtrip.hazards.loading': 'Carregando alertas…',
|
||||
'roadtrip.hazards.unavailable': 'Indisponível',
|
||||
'roadtrip.hazards.offline': 'Offline: alertas indisponíveis',
|
||||
'roadtrip.hazards.partial': 'Cobertura limitada',
|
||||
'roadtrip.stops.section': 'Paradas de serviço',
|
||||
'roadtrip.stops.inDays': 'Mostrar também em Dias',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Mostra zones de perill',
|
||||
'roadtrip.hazards.current': 'Avisos actuals',
|
||||
'roadtrip.hazards.note': 'Els avisos no són talls de carretera. La ruta no canvia.',
|
||||
'roadtrip.hazards.point': 'Només ubicació; àrea afectada desconeguda.',
|
||||
'roadtrip.hazards.loading': 'S’estan carregant els avisos…',
|
||||
'roadtrip.hazards.unavailable': 'No disponible',
|
||||
'roadtrip.hazards.offline': 'Sense connexió: avisos no disponibles',
|
||||
'roadtrip.hazards.partial': 'Cobertura limitada',
|
||||
'roadtrip.stops.section': 'Parades de servei',
|
||||
'roadtrip.stops.inDays': 'Mostra també a Dies',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Zobrazit nebezpečné oblasti',
|
||||
'roadtrip.hazards.current': 'Aktuální výstrahy',
|
||||
'roadtrip.hazards.note': 'Výstrahy nejsou uzavírky silnic. Trasa se nemění.',
|
||||
'roadtrip.hazards.point': 'Pouze místo; zasažená oblast není známa.',
|
||||
'roadtrip.hazards.loading': 'Načítání výstrah…',
|
||||
'roadtrip.hazards.unavailable': 'Nedostupné',
|
||||
'roadtrip.hazards.offline': 'Offline: aktuální výstrahy nejsou dostupné',
|
||||
'roadtrip.hazards.partial': 'Omezené pokrytí',
|
||||
'roadtrip.stops.section': 'Servisní zastávky',
|
||||
'roadtrip.stops.inDays': 'Zobrazit také ve Dnech',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Gefahrengebiete anzeigen',
|
||||
'roadtrip.hazards.current': 'Aktuelle Warnungen',
|
||||
'roadtrip.hazards.note': 'Warnungen sind keine Straßensperrungen. Die Route bleibt unverändert.',
|
||||
'roadtrip.hazards.point': 'Nur Ereignisort, betroffene Fläche unbekannt.',
|
||||
'roadtrip.hazards.loading': 'Warnungen werden geladen…',
|
||||
'roadtrip.hazards.unavailable': 'Nicht verfügbar',
|
||||
'roadtrip.hazards.offline': 'Offline: aktuelle Warnungen nicht verfügbar',
|
||||
'roadtrip.hazards.partial': 'Eingeschränkte Abdeckung',
|
||||
'roadtrip.stops.section': 'Service Stops',
|
||||
'roadtrip.stops.inDays': 'Auch in Days anzeigen',
|
||||
'roadtrip.stops.daysHint':
|
||||
'Gilt für alle Service Stops dieser Reise. Ausgeschaltet bleiben sie ausschließlich im Roadtrip-Plan; beim Einschalten erscheinen sie wieder in Days.',
|
||||
'roadtrip.stops.daysHint': 'Aus: Alle Service Stops bleiben nur im Roadtrip.',
|
||||
'roadtrip.window.dragHint':
|
||||
'Online kannst du ein Tagesende entlang der Route oder auf einen Ort ziehen; ein Rechtsklick stellt das automatische Ende wieder her.',
|
||||
'roadtrip.window.resetBoundaries': 'Automatische Tagesenden wiederherstellen',
|
||||
@@ -14,16 +21,15 @@ const roadtrip: TranslationStrings = {
|
||||
'roadtrip.window.endAt': 'Tagesende planen',
|
||||
'roadtrip.window.onRoute': 'Auf der Strecke',
|
||||
'roadtrip.window.atStop': 'Am letzten Ort',
|
||||
'roadtrip.window.routeHint': 'Zur Endzeit an der erreichten Stelle auf der Strecke pausieren.',
|
||||
'roadtrip.window.stopHint': 'Am letzten Ort bleiben, wenn der nächste vor Tagesende nicht mehr erreichbar ist.',
|
||||
'roadtrip.window.routeHint': 'Zur Endzeit auf der Strecke pausieren.',
|
||||
'roadtrip.window.stopHint': 'Stoppen, wenn der nächste Ort zu spät erreicht würde.',
|
||||
'roadtrip.window.legTooLong':
|
||||
'Eine Fahrt ist länger als das tägliche Zeitfenster. Ergänze einen Ort unterwegs oder wähle die Pause auf der Strecke.',
|
||||
'roadtrip.window.pointLabel': 'Tagesende von Tag {day} um {time} Uhr',
|
||||
'roadtrip.window.title': 'Tägliche Reisezeiten',
|
||||
'roadtrip.window.start': 'Tagesbeginn',
|
||||
'roadtrip.window.end': 'Tagesende',
|
||||
'roadtrip.window.hint':
|
||||
'Beide Zeiten setzen, um tägliche Pausen zu planen. Ein leeres Feld schaltet dies aus. Manuelle Zeiten haben Vorrang. Tage werden automatisch verbunden.',
|
||||
'roadtrip.window.hint': 'Beide Zeiten aktivieren. Manuelle Zeiten gehen vor.',
|
||||
'roadtrip.window.invalid': 'Das Tagesende muss nach dem Tagesbeginn liegen.',
|
||||
'roadtrip.window.stop': 'Tagesende',
|
||||
'roadtrip.window.resume': 'Weiterfahrt',
|
||||
@@ -75,8 +81,8 @@ const roadtrip: TranslationStrings = {
|
||||
'roadtrip.limit.fullNote': 'Ein Stopp macht wieder voll',
|
||||
'roadtrip.limit.rangeEmpty': 'Keine Reichweite',
|
||||
'roadtrip.limit.rangeEmptyHint': 'Trag eine Reichweite ein oder fülle die Felder aus, dann rechnet TREK sie aus.',
|
||||
'roadtrip.limit.specHint': 'Ausgefüllt bestimmen diese Werte die Reichweite oben.',
|
||||
'roadtrip.limit.vehicleHint': 'Sag, was du fährst, dann kannst du statt der Reichweite die Fahrzeugdaten angeben.',
|
||||
'roadtrip.limit.specHint': 'Fahrzeugdaten bestimmen die Reichweite.',
|
||||
'roadtrip.limit.vehicleHint': 'Fahrzeug wählen und Reichweite berechnen.',
|
||||
'roadtrip.limit.minutes': 'Min',
|
||||
'roadtrip.limit.off': 'aus',
|
||||
'roadtrip.limit.blockNote': 'Ein Block = {distance}',
|
||||
@@ -85,7 +91,7 @@ const roadtrip: TranslationStrings = {
|
||||
'roadtrip.limit.echoDry': '{count} Abschnitte ohne erreichbaren Stopp.',
|
||||
'roadtrip.limit.echoEmpty': 'Öffne einen Roadtrip, um zu sehen, was das bewirkt.',
|
||||
'roadtrip.limit.specToggle': 'Aus den Fahrzeugdaten rechnen',
|
||||
'roadtrip.limit.hint': 'Zählt nur Fahrzeit. Standzeiten und Übernachtungen sind nicht enthalten.',
|
||||
'roadtrip.limit.hint': 'Nur Fahrzeit, ohne Aufenthalte und Nachtetappen.',
|
||||
'roadtrip.limit.legOver': '{time} über deiner längsten Fahrt',
|
||||
'roadtrip.limit.dayOver': '{time} drüber',
|
||||
'roadtrip.limit.range': '{distance} seit dem letzten Tanken',
|
||||
@@ -93,15 +99,13 @@ const roadtrip: TranslationStrings = {
|
||||
'roadtrip.line.section': 'Routenlinie',
|
||||
'roadtrip.line.connect': 'Tage verbinden',
|
||||
'roadtrip.line.dayColors': 'Farbe je Tag',
|
||||
'roadtrip.line.hint': 'Routet auch die Strecke zwischen zwei Tagen und zählt sie zum Ankunftstag.',
|
||||
'roadtrip.line.hint': 'Verbindungsfahrten zählen zum Ankunftstag.',
|
||||
'roadtrip.avoid.section': 'Möglichst meiden',
|
||||
'roadtrip.avoid.toll': 'Mautstraßen',
|
||||
'roadtrip.avoid.motorway': 'Autobahnen',
|
||||
'roadtrip.avoid.ferry': 'Fähren',
|
||||
'roadtrip.avoid.hint':
|
||||
'Das wird nur schwächer gewichtet, nicht verboten. Wo eine Fahrt keinen Weg drumherum hat, nutzt sie es trotzdem, und der Tag sagt es.',
|
||||
'roadtrip.avoid.unavailable':
|
||||
'Nicht verfügbar: diese Instanz routet über ihre eigene Maschine, die keine Straßenklasse auslassen kann.',
|
||||
'roadtrip.avoid.hint': 'Meidet nach Möglichkeit und markiert Ausnahmen.',
|
||||
'roadtrip.avoid.unavailable': 'Der Routing-Anbieter unterstützt kein Meiden.',
|
||||
'roadtrip.avoid.badge': '{count} gemieden',
|
||||
'roadtrip.avoid.missed': '{classes} unvermeidbar',
|
||||
'roadtrip.avoid.missedHint':
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Show hazard areas',
|
||||
'roadtrip.hazards.current': 'Current warnings',
|
||||
'roadtrip.hazards.note': 'Warnings are not road closures. Routes stay unchanged.',
|
||||
'roadtrip.hazards.point': 'Location only; affected area unknown.',
|
||||
'roadtrip.hazards.loading': 'Loading warnings…',
|
||||
'roadtrip.hazards.unavailable': 'Unavailable',
|
||||
'roadtrip.hazards.offline': 'Offline: live warnings unavailable',
|
||||
'roadtrip.hazards.partial': 'Limited coverage',
|
||||
'roadtrip.stops.section': 'Service stops',
|
||||
'roadtrip.stops.inDays': 'Show in Days too',
|
||||
'roadtrip.stops.daysHint':
|
||||
'Applies to all service stops in this trip. When off, they stay exclusively in the Roadtrip plan. Turn on to show them in Days again.',
|
||||
'roadtrip.stops.daysHint': 'Off keeps all service stops in Roadtrip only.',
|
||||
'roadtrip.window.dragHint':
|
||||
'While online, drag a day ending along the route or onto a place; right-click it to restore the automatic ending.',
|
||||
'roadtrip.window.resetBoundaries': 'Restore automatic day endings',
|
||||
@@ -14,16 +21,15 @@ const roadtrip: TranslationStrings = {
|
||||
'roadtrip.window.endAt': 'End the day',
|
||||
'roadtrip.window.onRoute': 'Along the route',
|
||||
'roadtrip.window.atStop': 'At the last place',
|
||||
'roadtrip.window.routeHint': 'Pause along the route when the end time is reached.',
|
||||
'roadtrip.window.stopHint': 'Stay at the last place if the next one cannot be reached before the end time.',
|
||||
'roadtrip.window.routeHint': 'Pause on the route at the end time.',
|
||||
'roadtrip.window.stopHint': 'Stop before the next place would exceed the end time.',
|
||||
'roadtrip.window.legTooLong':
|
||||
'A drive exceeds the daily travel window. Add a place along the way or choose to pause along the route.',
|
||||
'roadtrip.window.pointLabel': 'End of day {day} at {time}',
|
||||
'roadtrip.window.title': 'Daily travel times',
|
||||
'roadtrip.window.start': 'Day start time',
|
||||
'roadtrip.window.end': 'Day end time',
|
||||
'roadtrip.window.hint':
|
||||
'Set both times to plan daily breaks. Clear either to turn this off. Manual times take priority. Days are connected automatically.',
|
||||
'roadtrip.window.hint': 'Set both times to enable. Manual times take priority.',
|
||||
'roadtrip.window.invalid': 'The end time must be later than the start time.',
|
||||
'roadtrip.window.stop': 'End of day',
|
||||
'roadtrip.window.resume': 'Continue journey',
|
||||
@@ -74,8 +80,8 @@ const roadtrip: TranslationStrings = {
|
||||
'roadtrip.limit.fullNote': 'A stop fills right up',
|
||||
'roadtrip.limit.rangeEmpty': 'No range set',
|
||||
'roadtrip.limit.rangeEmptyHint': 'Type a range, or fill in the figures below and TREK works it out.',
|
||||
'roadtrip.limit.specHint': 'Filled in, these decide the range above.',
|
||||
'roadtrip.limit.vehicleHint': 'Name the kind of car and you can state its figures instead of a range.',
|
||||
'roadtrip.limit.specHint': 'Vehicle details determine the range.',
|
||||
'roadtrip.limit.vehicleHint': 'Choose a vehicle to calculate its range.',
|
||||
'roadtrip.limit.minutes': 'min',
|
||||
'roadtrip.limit.off': 'off',
|
||||
'roadtrip.limit.blockNote': 'One block = {distance}',
|
||||
@@ -84,7 +90,7 @@ const roadtrip: TranslationStrings = {
|
||||
'roadtrip.limit.echoDry': '{count} stretches with no reachable stop.',
|
||||
'roadtrip.limit.echoEmpty': 'Open a road trip to see what these do to it.',
|
||||
'roadtrip.limit.specToggle': 'Work it out from the car',
|
||||
'roadtrip.limit.hint': 'Counts driving time only. Time spent at stops and overnight legs are not included.',
|
||||
'roadtrip.limit.hint': 'Driving only, excluding stays and overnight legs.',
|
||||
'roadtrip.limit.legOver': '{time} over your longest drive',
|
||||
'roadtrip.limit.dayOver': '{time} over',
|
||||
'roadtrip.limit.range': '{distance} since the last fill-up',
|
||||
@@ -92,15 +98,13 @@ const roadtrip: TranslationStrings = {
|
||||
'roadtrip.line.section': 'Route line',
|
||||
'roadtrip.line.connect': 'Connect the days',
|
||||
'roadtrip.line.dayColors': 'A colour per day',
|
||||
'roadtrip.line.hint': 'Also routes the gap between two days, and counts it on the day it arrives.',
|
||||
'roadtrip.line.hint': 'Connecting drives count toward the arrival day.',
|
||||
'roadtrip.avoid.section': 'Avoid where possible',
|
||||
'roadtrip.avoid.toll': 'Toll roads',
|
||||
'roadtrip.avoid.motorway': 'Motorways',
|
||||
'roadtrip.avoid.ferry': 'Ferries',
|
||||
'roadtrip.avoid.hint':
|
||||
'These are weighted down, not banned. Where a drive has no way around one, it still uses it and the day says so.',
|
||||
'roadtrip.avoid.unavailable':
|
||||
'Not available: this instance routes through its own engine, which cannot leave a road class out.',
|
||||
'roadtrip.avoid.hint': 'Avoids where possible; exceptions are flagged.',
|
||||
'roadtrip.avoid.unavailable': 'Your routing provider does not support avoidance.',
|
||||
'roadtrip.avoid.badge': '{count} avoided',
|
||||
'roadtrip.avoid.missed': '{classes} unavoidable',
|
||||
'roadtrip.avoid.missedHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Mostrar zonas de peligro',
|
||||
'roadtrip.hazards.current': 'Alertas actuales',
|
||||
'roadtrip.hazards.note': 'Las alertas no son cierres de carreteras. La ruta no cambia.',
|
||||
'roadtrip.hazards.point': 'Solo ubicación; área afectada desconocida.',
|
||||
'roadtrip.hazards.loading': 'Cargando alertas…',
|
||||
'roadtrip.hazards.unavailable': 'No disponible',
|
||||
'roadtrip.hazards.offline': 'Sin conexión: alertas no disponibles',
|
||||
'roadtrip.hazards.partial': 'Cobertura limitada',
|
||||
'roadtrip.stops.section': 'Paradas de servicio',
|
||||
'roadtrip.stops.inDays': 'Mostrar también en Días',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Afficher les zones à risque',
|
||||
'roadtrip.hazards.current': 'Alertes actuelles',
|
||||
'roadtrip.hazards.note': 'Les alertes ne sont pas des fermetures de routes. Le trajet reste inchangé.',
|
||||
'roadtrip.hazards.point': 'Lieu uniquement, zone touchée inconnue.',
|
||||
'roadtrip.hazards.loading': 'Chargement des alertes…',
|
||||
'roadtrip.hazards.unavailable': 'Indisponible',
|
||||
'roadtrip.hazards.offline': 'Hors ligne : alertes indisponibles',
|
||||
'roadtrip.hazards.partial': 'Couverture limitée',
|
||||
'roadtrip.stops.section': 'Arrêts de service',
|
||||
'roadtrip.stops.inDays': 'Afficher aussi dans Jours',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Εμφάνιση επικίνδυνων περιοχών',
|
||||
'roadtrip.hazards.current': 'Τρέχουσες προειδοποιήσεις',
|
||||
'roadtrip.hazards.note': 'Οι προειδοποιήσεις δεν σημαίνουν κλειστούς δρόμους. Η διαδρομή δεν αλλάζει.',
|
||||
'roadtrip.hazards.point': 'Μόνο τοποθεσία· άγνωστη πληγείσα περιοχή.',
|
||||
'roadtrip.hazards.loading': 'Φόρτωση προειδοποιήσεων…',
|
||||
'roadtrip.hazards.unavailable': 'Μη διαθέσιμο',
|
||||
'roadtrip.hazards.offline': 'Εκτός σύνδεσης: μη διαθέσιμες προειδοποιήσεις',
|
||||
'roadtrip.hazards.partial': 'Περιορισμένη κάλυψη',
|
||||
'roadtrip.stops.section': 'Στάσεις εξυπηρέτησης',
|
||||
'roadtrip.stops.inDays': 'Εμφάνιση και στις Ημέρες',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Veszélyes területek megjelenítése',
|
||||
'roadtrip.hazards.current': 'Aktuális figyelmeztetések',
|
||||
'roadtrip.hazards.note': 'A figyelmeztetések nem útlezárások. Az útvonal változatlan marad.',
|
||||
'roadtrip.hazards.point': 'Csak helyszín; az érintett terület ismeretlen.',
|
||||
'roadtrip.hazards.loading': 'Figyelmeztetések betöltése…',
|
||||
'roadtrip.hazards.unavailable': 'Nem érhető el',
|
||||
'roadtrip.hazards.offline': 'Offline: aktuális figyelmeztetések nem érhetők el',
|
||||
'roadtrip.hazards.partial': 'Korlátozott lefedettség',
|
||||
'roadtrip.stops.section': 'Szervizmegállók',
|
||||
'roadtrip.stops.inDays': 'Megjelenítés a Napok nézetben is',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Tampilkan area bahaya',
|
||||
'roadtrip.hazards.current': 'Peringatan terkini',
|
||||
'roadtrip.hazards.note': 'Peringatan bukan penutupan jalan. Rute tidak berubah.',
|
||||
'roadtrip.hazards.point': 'Hanya lokasi; area terdampak tidak diketahui.',
|
||||
'roadtrip.hazards.loading': 'Memuat peringatan…',
|
||||
'roadtrip.hazards.unavailable': 'Tidak tersedia',
|
||||
'roadtrip.hazards.offline': 'Luring: peringatan terkini tidak tersedia',
|
||||
'roadtrip.hazards.partial': 'Cakupan terbatas',
|
||||
'roadtrip.stops.section': 'Perhentian layanan',
|
||||
'roadtrip.stops.inDays': 'Tampilkan juga di Hari',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Mostra zone di pericolo',
|
||||
'roadtrip.hazards.current': 'Avvisi attuali',
|
||||
'roadtrip.hazards.note': 'Gli avvisi non indicano strade chiuse. Il percorso non cambia.',
|
||||
'roadtrip.hazards.point': 'Solo posizione; area interessata sconosciuta.',
|
||||
'roadtrip.hazards.loading': 'Caricamento avvisi…',
|
||||
'roadtrip.hazards.unavailable': 'Non disponibile',
|
||||
'roadtrip.hazards.offline': 'Offline: avvisi non disponibili',
|
||||
'roadtrip.hazards.partial': 'Copertura limitata',
|
||||
'roadtrip.stops.section': 'Soste di servizio',
|
||||
'roadtrip.stops.inDays': 'Mostra anche in Giorni',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': '危険地域を表示',
|
||||
'roadtrip.hazards.current': '現在の警報',
|
||||
'roadtrip.hazards.note': '警報は通行止めを意味しません。ルートは変更されません。',
|
||||
'roadtrip.hazards.point': '発生地点のみ。影響範囲は不明です。',
|
||||
'roadtrip.hazards.loading': '警報を読み込み中…',
|
||||
'roadtrip.hazards.unavailable': '利用できません',
|
||||
'roadtrip.hazards.offline': 'オフライン:最新の警報は利用できません',
|
||||
'roadtrip.hazards.partial': '対象範囲は限定的',
|
||||
'roadtrip.stops.section': 'サービス施設での停車',
|
||||
'roadtrip.stops.inDays': '日別にも表示',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': '위험 지역 표시',
|
||||
'roadtrip.hazards.current': '현재 경보',
|
||||
'roadtrip.hazards.note': '경보는 도로 폐쇄를 의미하지 않습니다. 경로는 변경되지 않습니다.',
|
||||
'roadtrip.hazards.point': '발생 위치만 표시하며 영향 지역은 알 수 없습니다.',
|
||||
'roadtrip.hazards.loading': '경보 불러오는 중…',
|
||||
'roadtrip.hazards.unavailable': '사용 불가',
|
||||
'roadtrip.hazards.offline': '오프라인: 현재 경보를 사용할 수 없습니다',
|
||||
'roadtrip.hazards.partial': '제한된 범위',
|
||||
'roadtrip.stops.section': '편의시설 경유지',
|
||||
'roadtrip.stops.inDays': '일별 보기에도 표시',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Gevarengebieden tonen',
|
||||
'roadtrip.hazards.current': 'Actuele waarschuwingen',
|
||||
'roadtrip.hazards.note': 'Waarschuwingen zijn geen wegafsluitingen. De route blijft ongewijzigd.',
|
||||
'roadtrip.hazards.point': 'Alleen locatie; getroffen gebied onbekend.',
|
||||
'roadtrip.hazards.loading': 'Waarschuwingen laden…',
|
||||
'roadtrip.hazards.unavailable': 'Niet beschikbaar',
|
||||
'roadtrip.hazards.offline': 'Offline: actuele waarschuwingen niet beschikbaar',
|
||||
'roadtrip.hazards.partial': 'Beperkte dekking',
|
||||
'roadtrip.stops.section': 'Servicestops',
|
||||
'roadtrip.stops.inDays': 'Ook in Dagen tonen',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Pokaż obszary zagrożeń',
|
||||
'roadtrip.hazards.current': 'Aktualne ostrzeżenia',
|
||||
'roadtrip.hazards.note': 'Ostrzeżenia nie oznaczają zamknięcia dróg. Trasa pozostaje bez zmian.',
|
||||
'roadtrip.hazards.point': 'Tylko lokalizacja; obszar zagrożenia nieznany.',
|
||||
'roadtrip.hazards.loading': 'Ładowanie ostrzeżeń…',
|
||||
'roadtrip.hazards.unavailable': 'Niedostępne',
|
||||
'roadtrip.hazards.offline': 'Offline: aktualne ostrzeżenia niedostępne',
|
||||
'roadtrip.hazards.partial': 'Ograniczony zasięg',
|
||||
'roadtrip.stops.section': 'Postoje serwisowe',
|
||||
'roadtrip.stops.inDays': 'Pokaż także w Dniach',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Показывать опасные зоны',
|
||||
'roadtrip.hazards.current': 'Текущие предупреждения',
|
||||
'roadtrip.hazards.note': 'Предупреждения не означают закрытие дорог. Маршрут не меняется.',
|
||||
'roadtrip.hazards.point': 'Только место события; затронутая зона неизвестна.',
|
||||
'roadtrip.hazards.loading': 'Загрузка предупреждений…',
|
||||
'roadtrip.hazards.unavailable': 'Недоступно',
|
||||
'roadtrip.hazards.offline': 'Нет сети: текущие предупреждения недоступны',
|
||||
'roadtrip.hazards.partial': 'Ограниченный охват',
|
||||
'roadtrip.stops.section': 'Сервисные остановки',
|
||||
'roadtrip.stops.inDays': 'Показывать также в разделе «Дни»',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Visa riskområden',
|
||||
'roadtrip.hazards.current': 'Aktuella varningar',
|
||||
'roadtrip.hazards.note': 'Varningar är inte vägavstängningar. Rutten ändras inte.',
|
||||
'roadtrip.hazards.point': 'Endast plats; berört område okänt.',
|
||||
'roadtrip.hazards.loading': 'Läser in varningar…',
|
||||
'roadtrip.hazards.unavailable': 'Inte tillgängligt',
|
||||
'roadtrip.hazards.offline': 'Offline: aktuella varningar saknas',
|
||||
'roadtrip.hazards.partial': 'Begränsad täckning',
|
||||
'roadtrip.stops.section': 'Servicestopp',
|
||||
'roadtrip.stops.inDays': 'Visa även i Dagar',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Tehlike bölgelerini göster',
|
||||
'roadtrip.hazards.current': 'Güncel uyarılar',
|
||||
'roadtrip.hazards.note': 'Uyarılar yol kapatmaları değildir. Rota değişmez.',
|
||||
'roadtrip.hazards.point': 'Yalnızca konum; etkilenen alan bilinmiyor.',
|
||||
'roadtrip.hazards.loading': 'Uyarılar yükleniyor…',
|
||||
'roadtrip.hazards.unavailable': 'Kullanılamıyor',
|
||||
'roadtrip.hazards.offline': 'Çevrimdışı: güncel uyarılar kullanılamıyor',
|
||||
'roadtrip.hazards.partial': 'Sınırlı kapsam',
|
||||
'roadtrip.stops.section': 'Hizmet durakları',
|
||||
'roadtrip.stops.inDays': 'Günler içinde de göster',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Показувати небезпечні зони',
|
||||
'roadtrip.hazards.current': 'Поточні попередження',
|
||||
'roadtrip.hazards.note': 'Попередження не означають закриття доріг. Маршрут не змінюється.',
|
||||
'roadtrip.hazards.point': 'Лише місце події; уражена зона невідома.',
|
||||
'roadtrip.hazards.loading': 'Завантаження попереджень…',
|
||||
'roadtrip.hazards.unavailable': 'Недоступно',
|
||||
'roadtrip.hazards.offline': 'Офлайн: поточні попередження недоступні',
|
||||
'roadtrip.hazards.partial': 'Обмежене охоплення',
|
||||
'roadtrip.stops.section': 'Сервісні зупинки',
|
||||
'roadtrip.stops.inDays': 'Показувати також у розділі «Дні»',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': 'Hiển thị vùng nguy hiểm',
|
||||
'roadtrip.hazards.current': 'Cảnh báo hiện tại',
|
||||
'roadtrip.hazards.note': 'Cảnh báo không có nghĩa là đường bị đóng. Tuyến đường không thay đổi.',
|
||||
'roadtrip.hazards.point': 'Chỉ có vị trí; chưa rõ vùng bị ảnh hưởng.',
|
||||
'roadtrip.hazards.loading': 'Đang tải cảnh báo…',
|
||||
'roadtrip.hazards.unavailable': 'Không khả dụng',
|
||||
'roadtrip.hazards.offline': 'Ngoại tuyến: không có cảnh báo hiện tại',
|
||||
'roadtrip.hazards.partial': 'Phạm vi hạn chế',
|
||||
'roadtrip.stops.section': 'Điểm dừng dịch vụ',
|
||||
'roadtrip.stops.inDays': 'Hiển thị cả trong Ngày',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': '顯示危險區域',
|
||||
'roadtrip.hazards.current': '目前警報',
|
||||
'roadtrip.hazards.note': '警報不代表道路封閉。路線保持不變。',
|
||||
'roadtrip.hazards.point': '僅有事件位置,受影響區域未知。',
|
||||
'roadtrip.hazards.loading': '正在載入警報…',
|
||||
'roadtrip.hazards.unavailable': '無法使用',
|
||||
'roadtrip.hazards.offline': '離線:無法取得目前警報',
|
||||
'roadtrip.hazards.partial': '涵蓋範圍有限',
|
||||
'roadtrip.stops.section': '服務停靠點',
|
||||
'roadtrip.stops.inDays': '也顯示於每日行程',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const roadtrip: TranslationStrings = {
|
||||
'roadtrip.hazards.show': '显示危险区域',
|
||||
'roadtrip.hazards.current': '当前警报',
|
||||
'roadtrip.hazards.note': '警报不代表道路封闭。路线保持不变。',
|
||||
'roadtrip.hazards.point': '仅有事件位置,受影响区域未知。',
|
||||
'roadtrip.hazards.loading': '正在加载警报…',
|
||||
'roadtrip.hazards.unavailable': '不可用',
|
||||
'roadtrip.hazards.offline': '离线:无法获取当前警报',
|
||||
'roadtrip.hazards.partial': '覆盖有限',
|
||||
'roadtrip.stops.section': '服务停靠点',
|
||||
'roadtrip.stops.inDays': '也显示于每日行程',
|
||||
'roadtrip.stops.daysHint':
|
||||
|
||||
@@ -77,4 +77,5 @@ export * from './plugin-permissions';
|
||||
// Plugin settings contracts: the settings-field descriptor + admin instance-config wire shapes.
|
||||
export * from './plugins/plugins.schema';
|
||||
export * from './roadtrip/preferences.schema';
|
||||
export * from './roadtrip/hazards.schema';
|
||||
export * from './roadtrip/planning.schema';
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import { hazardGeometrySchema } from './hazards.schema';
|
||||
|
||||
import { expect, it } from 'vitest';
|
||||
|
||||
it('rejects coordinates outside the map and incomplete polygon rings', () => {
|
||||
expect(hazardGeometrySchema.safeParse({ type: 'Point', coordinates: [181, 50] }).success).toBe(false);
|
||||
expect(hazardGeometrySchema.safeParse({ type: 'Polygon', coordinates: [[[10, 50]]] }).success).toBe(false);
|
||||
});
|
||||
@@ -0,0 +1,26 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
const position = z.tuple([z.number().min(-180).max(180), z.number().min(-90).max(90)]);
|
||||
const ring = z.array(position).min(4).max(50000);
|
||||
export const hazardGeometrySchema = z.discriminatedUnion('type', [
|
||||
z.object({ type: z.literal('Point'), coordinates: position }),
|
||||
z.object({ type: z.literal('Polygon'), coordinates: z.array(ring).min(1).max(500) }),
|
||||
z.object({ type: z.literal('MultiPolygon'), coordinates: z.array(z.array(ring).min(1).max(500)).max(500) }),
|
||||
]);
|
||||
export const roadtripHazardSchema = z.object({
|
||||
id: z.string(),
|
||||
source: z.enum(['DWD', 'GDACS']),
|
||||
title: z.string().max(2000),
|
||||
description: z.string().max(20000),
|
||||
updatedAt: z.string().datetime(),
|
||||
validUntil: z.string().datetime().nullable(),
|
||||
url: z.string().url(),
|
||||
geometry: hazardGeometrySchema,
|
||||
});
|
||||
export const roadtripHazardsSchema = z.object({
|
||||
fetchedAt: z.string().datetime(),
|
||||
hazards: z.array(roadtripHazardSchema).max(1000),
|
||||
sources: z.array(z.object({ source: z.enum(['DWD', 'GDACS']), status: z.enum(['ok', 'partial', 'unavailable']) })),
|
||||
});
|
||||
export type RoadtripHazard = z.infer<typeof roadtripHazardSchema>;
|
||||
export type RoadtripHazards = z.infer<typeof roadtripHazardsSchema>;
|
||||
@@ -21,6 +21,7 @@ export const roadtripPreferencesSchema = z
|
||||
roadtrip_connect_days: z.boolean().optional(),
|
||||
roadtrip_service_stops_in_days: z.boolean().optional(),
|
||||
roadtrip_day_colors: z.boolean().optional(),
|
||||
roadtrip_show_hazards: z.boolean().optional(),
|
||||
roadtrip_avoid: z
|
||||
.string()
|
||||
.max(32)
|
||||
|
||||
Reference in New Issue
Block a user