Files
TREK/shared/src/i18n/en/roadtrip.ts
T
Maurice bdb031a1e9 feat(roadtrip): hire car desks, bookings under stops, the ride as one block
A hire car is no seam, but its desks are where the drive starts and ends: the
pick-up opens its day when nothing timed comes first, the return closes the
day it is handed back on, the road runs through both and the range budget
starts from a full tank at the pick-up. The return is only placed when the
booking names a return day and a located return desk.

A table, tickets or a tour on the day hang under the stop they are pinned to
or booked at as chips that open the booking; one for no stop is listed under
the day. A ride that leaves and lands on the same day is one block on the
rail and in the phone chain, not two terminal rows and a band. Both shells
read the same helpers (carrierRide, stopBookings, roadtripRowModel).

Server reads car bookings into the plan context; the MCP descriptions say so.
The pt-BR locale had the three ride strings in Breton, fixed alongside.

Refs #2428
2026-09-21 17:05:42 +02:00

275 lines
15 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.stay.portals': 'Find accommodation',
'roadtrip.stay.portalHint': 'Check destination, dates and guests on the portal. CHECK24 requires a manual search.',
'roadtrip.charging.available': 'available',
'roadtrip.charging.unknown': 'No reliable data available',
'roadtrip.charging.stale': 'Status outdated',
'roadtrip.charging.prices': 'Published tariffs',
'roadtrip.charging.note':
'Published tariff; taxes, conditions and extra fees may apply. Your charging-card price can differ.',
'roadtrip.charging.coverage': 'Open data; coverage varies by region and operator.',
'roadtrip.charging.availability': 'Availability and prices',
'roadtrip.import.title': 'Import Google Maps route',
'roadtrip.import.note': 'Stops are appended to the selected day. TREK recalculates the route.',
'roadtrip.import.unresolved': 'Location unresolved; this stop will be skipped.',
'roadtrip.import.day': 'Day',
'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': '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',
'roadtrip.window.endHere': 'End the day here',
'roadtrip.window.endHereHint':
'You can end a day at a specific stop in its place details while Roadtrip mode and daily travel times are active.',
'roadtrip.window.endAt': 'End the day',
'roadtrip.window.onRoute': 'Along the route',
'roadtrip.window.atStop': 'At the last place',
'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 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',
'roadtrip.window.pointHint': 'This is your estimated overnight pause point.',
'roadtrip.window.departure': 'Continue after the remaining visit at {time}',
'roadtrip.window.showPoint': 'Show on map',
'roadtrip.window.incomplete': 'Daily breaks cannot be calculated until all connecting routes are available.',
'roadtrip.window.conflict':
'A fixed time conflicts with the drive and daily breaks. Manual times are unchanged; automatic scheduling is paused.',
'roadtrip.window.tooLong':
'These travel times would require more than {days} extra days. Choose a longer daily window.',
'roadtrip.mode.roadtrip': 'Road trip',
'roadtrip.mode.days': 'Days',
'roadtrip.mode.label': 'Plan view',
'roadtrip.title': 'Road trip',
'roadtrip.subtitle': 'Stops, driving times and arrival times for this trip',
'roadtrip.empty.title': 'No route yet',
'roadtrip.stops.label': 'Stops along the way',
'roadtrip.stops.remove': 'Remove stop',
'roadtrip.poi.title': 'Along the route',
'roadtrip.poi.scope': 'Day',
'roadtrip.poi.looking': 'Looking for',
'roadtrip.poi.searchingHint': 'Searching the route…',
'roadtrip.poi.found': '{count} on the way',
'roadtrip.poi.fuel': 'Fuel',
'roadtrip.poi.charging': 'Charging',
'roadtrip.stop.offRoad': '{distance} from the road',
'roadtrip.via.plugin': 'Stop on the way',
'roadtrip.limit.title': 'Driving settings',
'roadtrip.limit.legLabel': 'Longest drive at once',
'roadtrip.limit.dayLabel': 'Driving per day',
'roadtrip.limit.rangeLabel': 'Range on one tank',
'roadtrip.limit.fillLabel': 'Fill up to',
'roadtrip.limit.fillFull': 'full',
'roadtrip.limit.fillBadge': 'fills to {percent} %',
'roadtrip.limit.wearNote': '{percent} % lost to age',
'roadtrip.limit.rangeLabelCharge': 'Range on one charge',
'roadtrip.limit.sectionTrip': 'This trip',
'roadtrip.limit.sectionDriving': 'Driving',
'roadtrip.limit.sectionVehicle': 'Vehicle',
'roadtrip.limit.tankLabel': 'Tank size',
'roadtrip.limit.batteryLabel': 'Battery',
'roadtrip.limit.useLabel': 'Consumption',
'roadtrip.limit.wearLabel': 'Battery wear',
'roadtrip.limit.computed': 'Worked out from the vehicle’s figures',
'roadtrip.limit.perFill': 'per tank',
'roadtrip.limit.perCharge': 'per charge',
'roadtrip.limit.afterFill': 'A {percent} % stop gives {distance}',
'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': '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}',
'roadtrip.limit.echoOver': '{over} of {days} days over your limit.',
'roadtrip.limit.echoNone': 'All {days} days within your limits.',
'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': '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',
'roadtrip.limit.none': 'None set',
'roadtrip.line.section': 'Route line',
'roadtrip.line.connect': 'Connect the days',
'roadtrip.line.dayColors': 'A colour per day',
'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': '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':
'This day has no route around it, so the drive uses it. Every other day still avoids what it can.',
'roadtrip.refuel.dry': 'Tank runs out here',
'roadtrip.refuel.after': 'after {distance}',
'roadtrip.limit.vehicleLabel': 'What you drive',
'roadtrip.limit.vehicleAny': 'Either',
'roadtrip.limit.vehicleCombustion': 'Petrol',
'roadtrip.limit.vehicleElectric': 'Electric',
'roadtrip.refuel.dryElectric': 'Battery runs out here',
'roadtrip.refuel.findElectric': 'Find charging',
'roadtrip.refuel.find': 'Find fuel',
'roadtrip.refuel.again': 'Try again',
'roadtrip.refuel.looking': 'Looking along the route…',
'roadtrip.refuel.spare': '{distance} to spare',
'roadtrip.refuel.add': 'Add {name} as a fuel stop',
'roadtrip.refuel.addElectric': 'Add {name} as a charging stop',
'roadtrip.refuel.none': 'Nothing found on the reachable stretch.',
'roadtrip.refuel.incomplete': 'The search was cut short, so this stretch was not fully checked.',
'roadtrip.refuel.failed': 'The place search did not answer.',
'roadtrip.stop.none': 'A destination',
'roadtrip.stay.mode.pause': 'Pause',
'roadtrip.stay.mode.night': 'Overnight',
'roadtrip.stay.nightAdded': 'Added as an overnight stay',
'roadtrip.stay.nightAction': 'Add as an overnight stay',
'roadtrip.stop.makeService': 'Make it a stop on the way',
'roadtrip.stop.changeKind': 'Change what kind of stop this is',
'roadtrip.stop.backToDestination': 'Back to a destination',
'roadtrip.poi.anySocket': 'Any plug',
'roadtrip.poi.anyPower': 'Any power',
'roadtrip.poi.free': 'Free',
'roadtrip.poi.wholeDay': 'The whole day',
'roadtrip.poi.midLeg': 'Halfway, {from} to {to}',
'roadtrip.track.title': 'Day {number} follows a track',
'roadtrip.track.hint': 'Make this day follow an imported track',
'roadtrip.track.badge': 'Track',
'roadtrip.track.untitled': 'Unnamed track',
'roadtrip.track.empty': 'No tracks in this trip',
'roadtrip.track.emptyHint': 'Import a GPX or KML file and its tracks land here.',
'roadtrip.track.length': '{distance} long',
'roadtrip.track.gap': '{distance} off this day',
'roadtrip.track.onDay': 'along this day',
'roadtrip.track.explain':
'The drive is pulled onto the track with a handful of via points. Existing via points on those legs are replaced.',
'roadtrip.track.action': 'Follow this track',
'roadtrip.track.working': 'Fitting the drive to the track, round {round}',
'roadtrip.track.done': '{count} via points placed. The drive stays within {distance} of the track.',
'roadtrip.track.capped': '{count} via points placed. The drive gets no closer than {distance} at its widest.',
'roadtrip.track.already': 'The drive already followed this track.',
'roadtrip.track.errorRoute': 'The routing service did not answer.',
'roadtrip.track.errorSave': 'The via points could not be saved.',
'roadtrip.track.clear': 'Drop {count} via points',
'roadtrip.track.current': 'Currently following {name}',
'roadtrip.poi.rest': 'Rest area',
'roadtrip.poi.campsite': 'Campsite',
'roadtrip.poi.food': 'Food',
'roadtrip.poi.sights': 'Sights',
'roadtrip.poi.within': 'Within',
'roadtrip.poi.filter': 'Filter by name',
'roadtrip.poi.noMatch': 'Nothing on the way matches “{name}”.',
'roadtrip.poi.noneMatchFilters': 'Nothing on the way matches these filters.',
'roadtrip.poi.foundFiltered': '{count} of {total} on the way',
'roadtrip.poi.truncated': '{count} stretches had more than fits in one answer — narrow the corridor to see the rest.',
'roadtrip.poi.search': 'Search',
'roadtrip.poi.searching': 'Searching {done} of {total}',
'roadtrip.poi.capped': 'The route is long — only the first stretch was searched.',
'roadtrip.poi.partial': '{count} stretches could not be searched — the place search did not answer.',
'roadtrip.poi.failed': 'The place search is not answering right now.',
'roadtrip.poi.empty': 'Pick what you need and search.',
'roadtrip.poi.add': 'Add',
'roadtrip.poi.offRoute': '{distance} off the route',
'roadtrip.poi.atStart': 'near the start',
'roadtrip.poi.alongRoute': 'after {distance}',
'roadtrip.poi.clearResults': 'Clear results',
'roadtrip.poi.addManual': 'Add manually',
'roadtrip.poi.addManualShort': 'Manual',
'roadtrip.poi.manualHint':
'The place search does not find every charger or pump. Look one up by name and say where on the drive it goes.',
'roadtrip.poi.addBetween': 'Add between',
'roadtrip.poi.manualOffRoute': '{distance} from the route, so check which leg it belongs on.',
'roadtrip.poi.manualAppend': 'Nothing has routed yet, so it goes at the end of day {number}.',
'roadtrip.poi.manualNoResults': 'No places found.',
'roadtrip.poi.manualNoCoords':
'Without a position this goes to the trip\'s places rather than onto a drive. Pick one from the search above, or fill in the coordinates.',
'roadtrip.summary.distance': 'Distance',
'roadtrip.summary.driving': 'Driving time',
'roadtrip.alt.ask': 'Other ways',
'roadtrip.alt.title': 'Ways to drive this leg',
'roadtrip.alt.loading': 'Asking the router…',
'roadtrip.alt.onlyOne': 'Only one sensible way to drive this one.',
'roadtrip.alt.failed': 'The router is not answering right now.',
'roadtrip.alt.current': 'Current',
'roadtrip.alt.fastest': 'Fastest',
'roadtrip.alt.slower': '{time} slower',
'roadtrip.alt.quicker': '{time} quicker',
'roadtrip.alt.otherEngine': 'Timed by the avoidance router, not the main one.',
'roadtrip.day': 'Day {number}',
'roadtrip.quietDay.empty': 'No stops yet — drop one here',
'roadtrip.quietDay.one': 'Only {name} so far — drop a stop here',
'roadtrip.leg.driveText': '{distance} in {time}',
'roadtrip.day.stopCount': '{count} stops',
'roadtrip.day.fold': 'Fold',
'roadtrip.day.folded': 'Folded',
'roadtrip.stop.stayShort': 'Stay',
'roadtrip.stop.fillTitle': 'Fills to',
'roadtrip.stop.fillGives': 'about {distance} from here',
'roadtrip.stop.fillNoRange': 'Set a range to see what that buys.',
'roadtrip.stop.fillDefault': 'Use my default',
'roadtrip.stop.fillSet': 'Set how full this stop fills',
'roadtrip.leg.pending': 'No route',
'roadtrip.stop.addTitle': 'Add as a stop',
'roadtrip.stop.kind': 'Kind of stop',
'roadtrip.stop.landsOn': 'Day {day}, as stop {position}',
'roadtrip.stop.duplicate': '“{name}” is already on this trip.',
'roadtrip.stop.moreDetails': 'More details',
'roadtrip.stop.stay': 'Time at this stop',
'roadtrip.stop.pinned': 'Time you set',
'roadtrip.stop.computed': 'Calculated from the drive',
'roadtrip.stop.endIsLeave': 'On the road trip, the drive leaves at this time.',
'roadtrip.via.hint': 'Drag to reshape the route, right-click to remove',
'roadtrip.warn.late': 'Arrives {minutes} min after the time you set',
'roadtrip.warn.missedLeave': 'Arrives {minutes} min after the time you set to leave',
'roadtrip.warn.overnight': 'Next day',
'roadtrip.spill.title': 'From day {number}',
'roadtrip.spill.departs': 'leaves {time}',
'roadtrip.summary.stops': 'Stops',
'roadtrip.stay.add': 'Add a stay',
'roadtrip.stay.none': 'No stay',
'roadtrip.stay.custom': 'Minutes',
'roadtrip.stay.arrive': 'Arrive',
'roadtrip.stay.leave': 'Leave',
'roadtrip.stay.until': 'until {time}',
'roadtrip.stay.leavesAt': 'This visit has an end time, so the drive leaves at {time}.',
'roadtrip.stay.dayEndsFirst': 'The travel day ends before {time}, so the drive goes on the next morning.',
'roadtrip.stay.clearLeave': 'Remove end time',
'roadtrip.alt.noMotorway': 'No motorway',
'roadtrip.alt.noToll': 'No tolls',
'roadtrip.alt.noFerry': 'No ferry',
'roadtrip.summary.partial': 'Still working out the rest of the drive',
'roadtrip.stay.releaseTitle': 'Drop the overnight stay?',
'roadtrip.stay.releaseBody': 'The night at “{name}” will be removed. The stop stays on the drive as a pause.',
'roadtrip.stay.releaseBookedBody': 'The night at “{name}” will be removed together with the booking “{booking}” and any expense linked to it. The stop stays on the drive as a pause.',
'roadtrip.stay.releaseAction': 'Make it a pause',
'roadtrip.ride.departure': 'Departure {time}',
'roadtrip.ride.arrival': 'Arrival {time}',
'roadtrip.ride.pickup': 'Pick-up {time}',
'roadtrip.ride.return': 'Return {time}',
'roadtrip.ride.open': 'Open booking',
'roadtrip.bookings.loose': 'Also booked this day',
};
export default roadtrip;