feat(roadtrip): add daily scheduling and configurable day endings

This commit is contained in:
Maurice
2026-09-11 22:28:02 +02:00
parent 4f8605b529
commit 491cfccc56
124 changed files with 3512 additions and 354 deletions
@@ -1,5 +1,6 @@
import {
assignmentCreateRequestSchema,
assignmentEndDayRequestSchema,
assignmentMoveRequestSchema,
assignmentParticipantsRequestSchema,
assignmentTransportRequestSchema,
@@ -7,6 +8,14 @@ import {
import { describe, it, expect } from 'vitest';
it('requires a boolean for an explicit day end', () => {
expect(assignmentEndDayRequestSchema.parse({ end_day: true })).toEqual({ end_day: true });
expect(assignmentEndDayRequestSchema.parse({ end_day: false })).toEqual({ end_day: false });
for (const end_day of [1, 'true', null, undefined]) {
expect(assignmentEndDayRequestSchema.safeParse({ end_day }).success).toBe(false);
}
});
describe('assignmentCreateRequestSchema', () => {
it('requires a place_id; notes optional/nullable', () => {
expect(assignmentCreateRequestSchema.safeParse({ place_id: 2 }).success).toBe(true);
@@ -40,6 +40,7 @@ export const assignmentSchema = z.object({
notes: z.string().nullable().optional(),
assignment_time: z.string().nullable().optional(),
assignment_end_time: z.string().nullable().optional(),
end_day: z.boolean().optional(),
// Per-segment travel mode (#1281): the transport mode of the leg LEAVING this
// stop for the next one. null = inherit the day's default_transport_mode.
leg_transport_mode: z.string().nullable().optional(),
@@ -78,6 +79,11 @@ export const assignmentTimeRequestSchema = z.object({
});
export type AssignmentTimeRequest = z.infer<typeof assignmentTimeRequestSchema>;
export const assignmentEndDayRequestSchema = z.object({
end_day: z.boolean(),
});
export type AssignmentEndDayRequest = z.infer<typeof assignmentEndDayRequestSchema>;
/**
* PUT /:id/notes (#2163) — edit the per-assignment note after creation.
* Deliberately uncapped like the create contract above: the REST create body
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "عند الاتصال بالإنترنت، اسحب نهاية اليوم على المسار أو إلى مكان؛ انقر بزر الفأرة الأيمن لاستعادة النهاية التلقائية.",
'roadtrip.window.resetBoundaries': "استعادة نهايات الأيام التلقائية",
'roadtrip.window.endHere': 'إنهاء اليوم هنا',
'roadtrip.window.endHereHint':
'يمكنك إنهاء اليوم عند محطة محددة من تفاصيل المكان عندما يكون وضع Roadtrip وأوقات السفر اليومية مفعّلين.',
'roadtrip.window.endAt': 'نهاية اليوم',
'roadtrip.window.onRoute': 'على الطريق',
'roadtrip.window.atStop': 'في آخر مكان',
'roadtrip.window.routeHint': 'التوقف على الطريق عند بلوغ وقت نهاية اليوم.',
'roadtrip.window.stopHint': 'البقاء في آخر مكان إذا تعذر الوصول إلى المكان التالي قبل نهاية اليوم.',
'roadtrip.window.legTooLong':
'تتجاوز مدة إحدى الرحلات الفترة اليومية. أضف مكانًا في الطريق أو اختر التوقف على الطريق.',
'roadtrip.window.pointLabel': 'نهاية اليوم {day} عند الساعة {time}',
'roadtrip.window.title': 'أوقات السفر اليومية',
'roadtrip.window.start': 'بداية اليوم',
'roadtrip.window.end': 'نهاية اليوم',
'roadtrip.window.hint':
'حدّد الوقتين لتخطيط الاستراحات اليومية. امسح أحدهما لإيقاف الميزة. الأوقات اليدوية لها الأولوية. يتم وصل الأيام تلقائيًا.',
'roadtrip.window.invalid': 'يجب أن يكون وقت النهاية بعد وقت البداية.',
'roadtrip.window.stop': 'نهاية اليوم',
'roadtrip.window.resume': 'متابعة الرحلة',
'roadtrip.window.pointHint': 'هذه نقطة التوقف الليلية المتوقعة لرحلتك.',
'roadtrip.window.departure': 'المتابعة بعد بقية الزيارة الساعة {time}',
'roadtrip.window.showPoint': 'عرض على الخريطة',
'roadtrip.window.incomplete': 'يلزم توفر جميع المسارات الرابطة لحساب الاستراحات اليومية.',
'roadtrip.window.conflict':
'يتعارض وقت ثابت مع القيادة والاستراحات. تبقى الأوقات اليدوية كما هي؛ تم إيقاف التخطيط التلقائي مؤقتًا.',
'roadtrip.window.tooLong': 'تتطلب هذه الأوقات أكثر من 365 يومًا إضافيًا. اختر فترة يومية أطول.',
'roadtrip.mode.roadtrip': 'رحلة برية',
'roadtrip.mode.days': 'الأيام',
'roadtrip.mode.label': 'عرض الخطة',
+2 -1
View File
@@ -26,7 +26,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'محرك مسارات خاص',
'settings.routingBaseHint': 'خادم OSRM خاص بك. اتركه فارغًا لاستخدام الخوادم العامة التي تسمح بطلب واحد تقريبًا في الثانية — يكفي ليوم واحد، وضيّق لرحلة برية. يسري بعد إعادة تشغيل الخادم.',
'settings.valhallaBase': 'خادم Valhalla خاص بك',
'settings.valhallaBaseHint': 'خادم Valhalla خاص بك. يُسأل عندما يجب أن تتجنب المرحلة الرسوم أو الطرق السريعة أو العبّارات — الخوادم العامة لـ OSRM لا تستطيع الإجابة عن ذلك. الفراغ يستخدم Valhalla العام من FOSSGIS، إلا إذا حُدِّد أعلاه محرك توجيه خاص بك، فلا يُسأل أي محرك ثانٍ. يسري بعد إعادة تشغيل الخادم.',
'settings.valhallaBaseHint':
'يستخدم TREK خدمة Valhalla العامة من FOSSGIS افتراضيًا لتجنب الطرق ذات الرسوم والطرق السريعة والعبّارات. أدخل رابط خادم Valhalla الخاص بك هنا لاستخدامه بدلًا منها. إذا تم إعداد خادم توجيه خاص فقط، فلن تُستخدم خدمة Valhalla العامة. بعد إدخال رابط خاص، أعد تشغيل الخادم وحمّل الصفحة مجددًا.',
'settings.mapHint': 'قالب URL لبلاطات الخريطة',
'settings.mapProvider': 'مزود الخريطة',
'settings.mapProviderHint': 'يؤثر على خرائط Trip Planner و Journey. يستخدم Atlas دائمًا Leaflet.',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Online, arraste o fim do dia pela rota ou até um lugar; clique com o botão direito para restaurar o fim automático.",
'roadtrip.window.resetBoundaries': "Restaurar fins de dia automáticos",
'roadtrip.window.endHere': 'Encerrar o dia aqui',
'roadtrip.window.endHereHint':
'Você pode encerrar o dia em uma parada específica nos detalhes do local quando o modo Roadtrip e os horários diários estiverem ativos.',
'roadtrip.window.endAt': 'Encerrar o dia',
'roadtrip.window.onRoute': 'No trajeto',
'roadtrip.window.atStop': 'No último local',
'roadtrip.window.routeHint': 'Pausar no trajeto ao atingir o horário de término.',
'roadtrip.window.stopHint': 'Ficar no último local se não for possível chegar ao próximo antes do fim do dia.',
'roadtrip.window.legTooLong':
'Um trecho excede o período diário. Adicione um local no caminho ou escolha pausar no trajeto.',
'roadtrip.window.pointLabel': 'Fim do dia {day} às {time}',
'roadtrip.window.title': 'Horários diários',
'roadtrip.window.start': 'Início do dia',
'roadtrip.window.end': 'Fim do dia',
'roadtrip.window.hint':
'Defina os dois horários para planejar pausas diárias. Limpe um deles para desativar. Horários manuais têm prioridade. Os dias são conectados automaticamente.',
'roadtrip.window.invalid': 'O horário final deve ser posterior ao inicial.',
'roadtrip.window.stop': 'Fim do dia',
'roadtrip.window.resume': 'Continuar viagem',
'roadtrip.window.pointHint': 'Este é o ponto estimado de pausa durante a noite.',
'roadtrip.window.departure': 'Continuar após o restante da visita às {time}',
'roadtrip.window.showPoint': 'Mostrar no mapa',
'roadtrip.window.incomplete': 'Todas as rotas de conexão são necessárias para calcular as pausas diárias.',
'roadtrip.window.conflict':
'Um horário fixo conflita com o trajeto e as pausas. Os horários manuais são mantidos; o planejamento automático está pausado.',
'roadtrip.window.tooLong': 'Esses horários exigiriam mais de 365 dias extras. Escolha um período diário maior.',
'roadtrip.mode.roadtrip': 'Viagem de carro',
'roadtrip.mode.days': 'Dias',
'roadtrip.mode.label': 'Visão do plano',
+2 -1
View File
@@ -28,7 +28,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Servidor de rotas próprio',
'settings.routingBaseHint': 'Uma instância própria do OSRM. Vazio usa os servidores públicos, que permitem cerca de uma requisição por segundo — suficiente para um dia, apertado para uma viagem de carro. Passa a valer após reiniciar o servidor.',
'settings.valhallaBase': 'Instância Valhalla própria',
'settings.valhallaBaseHint': 'Uma instância Valhalla própria. Ela é consultada quando um trecho deve evitar pedágios, rodovias ou balsas — os servidores OSRM públicos não conseguem responder isso. Vazio usa a Valhalla pública da FOSSGIS, a não ser que acima esteja indicado um motor de rotas próprio; nesse caso nenhum segundo motor é consultado. Só vale após reiniciar o servidor.',
'settings.valhallaBaseHint':
'Por padrão, o TREK usa a Valhalla pública da FOSSGIS para evitar pedágios, rodovias e balsas. Insira aqui a URL da sua própria Valhalla para usá-la no lugar. Se apenas uma instância de roteamento própria estiver configurada, a Valhalla pública não será usada. Após inserir uma URL própria, reinicie o servidor e recarregue a página.',
'settings.mapHint': 'URL do modelo de blocos do mapa',
'settings.mapProvider': 'Provedor de mapa',
'settings.mapProviderHint': 'Afeta os mapas do Planejador de Viagem e Diário. Atlas sempre usa Leaflet.',
+29
View File
@@ -1,6 +1,35 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "En línia, arrossega el final del dia per la ruta o fins a un lloc; fes clic amb el botó dret per restaurar el final automàtic.",
'roadtrip.window.resetBoundaries': "Restaura els finals de dia automàtics",
'roadtrip.window.endHere': 'Acaba el dia aquí',
'roadtrip.window.endHereHint':
'Pots acabar el dia en una parada concreta des dels seus detalls quan el mode Roadtrip i els horaris diaris estiguin actius.',
'roadtrip.window.endAt': 'Final del dia',
'roadtrip.window.onRoute': 'Durant el trajecte',
'roadtrip.window.atStop': 'A l’últim lloc',
'roadtrip.window.routeHint': 'Fer una pausa al trajecte en arribar a l’hora de finalització.',
'roadtrip.window.stopHint': 'Quedar-se a l’últim lloc si no es pot arribar al següent abans del final del dia.',
'roadtrip.window.legTooLong':
'Un trajecte supera l’horari diari. Afegeix un lloc pel camí o tria fer una pausa durant el trajecte.',
'roadtrip.window.pointLabel': 'Final del dia {day} a les {time}',
'roadtrip.window.title': 'Horaris diaris',
'roadtrip.window.start': 'Inici del dia',
'roadtrip.window.end': 'Final del dia',
'roadtrip.window.hint':
'Indica les dues hores per planificar pauses diàries. Buida un camp per desactivar-les. Les hores manuals tenen prioritat. Els dies es connecten automàticament.',
'roadtrip.window.invalid': 'L’hora final ha de ser posterior a la inicial.',
'roadtrip.window.stop': 'Final del dia',
'roadtrip.window.resume': 'Continuar el viatge',
'roadtrip.window.pointHint': 'Aquest és el punt estimat de pausa durant la nit.',
'roadtrip.window.departure': 'Continuar després de la resta de la visita a les {time}',
'roadtrip.window.showPoint': 'Mostra al mapa',
'roadtrip.window.incomplete': 'Calen totes les rutes de connexió per calcular les pauses diàries.',
'roadtrip.window.conflict':
'Una hora fixa entra en conflicte amb el trajecte i les pauses. Es mantenen les hores manuals; la planificació automàtica està en pausa.',
'roadtrip.window.tooLong':
'Aquests horaris requereixen més de 365 dies addicionals. Tria una franja diària més llarga.',
'roadtrip.mode.roadtrip': 'Viatge per carretera',
'roadtrip.mode.days': 'Dies',
'roadtrip.mode.label': 'Vista del pla',
+2 -1
View File
@@ -17,7 +17,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Motor de rutes propi',
'settings.routingBaseHint': 'Una instància pròpia d’OSRM. Buit fa servir els servidors públics, que permeten aproximadament una petició per segon: prou per a un dia, just per a un viatge llarg. Té efecte després de reiniciar el servidor.',
'settings.valhallaBase': 'Instància Valhalla pròpia',
'settings.valhallaBaseHint': 'Una instància Valhalla pròpia. Es consulta quan una etapa ha d’evitar peatges, autopistes o ferris: els servidors OSRM públics no poden respondre-ho. Buit fa servir el Valhalla públic de FOSSGIS, tret que a dalt s’indiqui un motor de rutes propi, cas en què no es consulta cap segon motor. Té efecte després de reiniciar el servidor.',
'settings.valhallaBaseHint':
'TREK utilitza per defecte la Valhalla pública de FOSSGIS per evitar peatges, autopistes i ferris. Introdueix aquí l’URL de la teva Valhalla per utilitzar-la en lloc de la pública. Si només hi ha una instància d’encaminament pròpia configurada, no s’utilitza la Valhalla pública. Després d’introduir una URL pròpia, reinicia el servidor i torna a carregar la pàgina.',
'settings.mapHint': "Plantilla d'URL per als mosaics del mapa",
'settings.mapProvider': 'Proveïdor de mapa',
'settings.mapProviderHint': 'Afecta els mapes de Trip Planner i Journey. Atles sempre utilitza Leaflet.',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Online můžete konec dne přetáhnout po trase nebo na místo; pravým tlačítkem obnovíte automatický konec.",
'roadtrip.window.resetBoundaries': "Obnovit automatické konce dnů",
'roadtrip.window.endHere': 'Ukončit den zde',
'roadtrip.window.endHereHint':
'V podrobnostech místa můžete určit zastávku jako konec dne, když je aktivní režim Roadtrip a denní časy cestování.',
'roadtrip.window.endAt': 'Ukončení dne',
'roadtrip.window.onRoute': 'Na trase',
'roadtrip.window.atStop': 'Na posledním místě',
'roadtrip.window.routeHint': 'Zastavit na trase při dosažení času konce dne.',
'roadtrip.window.stopHint': 'Zůstat na posledním místě, pokud další nelze dosáhnout před koncem dne.',
'roadtrip.window.legTooLong':
'Jeden úsek přesahuje denní časové okno. Přidejte místo po cestě nebo zvolte zastávku na trase.',
'roadtrip.window.pointLabel': 'Konec dne {day} v {time}',
'roadtrip.window.title': 'Denní časy cestování',
'roadtrip.window.start': 'Začátek dne',
'roadtrip.window.end': 'Konec dne',
'roadtrip.window.hint':
'Pro denní přestávky nastavte oba časy. Vymazáním jednoho automatiku vypnete. Ruční časy mají přednost. Dny se automaticky propojí.',
'roadtrip.window.invalid': 'Konec dne musí být později než začátek.',
'roadtrip.window.stop': 'Konec dne',
'roadtrip.window.resume': 'Pokračovat v cestě',
'roadtrip.window.pointHint': 'Zde je odhadované místo noční přestávky.',
'roadtrip.window.departure': 'Pokračovat po zbytku návštěvy v {time}',
'roadtrip.window.showPoint': 'Zobrazit na mapě',
'roadtrip.window.incomplete': 'Denní přestávky lze spočítat až po získání všech navazujících tras.',
'roadtrip.window.conflict':
'Pevný čas je v rozporu s jízdou a přestávkami. Ruční časy zůstávají zachovány; automatické plánování je pozastaveno.',
'roadtrip.window.tooLong': 'Tyto časy vyžadují více než 365 dalších dní. Zvolte delší denní interval.',
'roadtrip.mode.roadtrip': 'Cesta autem',
'roadtrip.mode.days': 'Dny',
'roadtrip.mode.label': 'Zobrazení plánu',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Vlastní směrovací server',
'settings.routingBaseHint': 'Vlastní instance OSRM. Prázdné použije veřejné servery s limitem asi jednoho požadavku za sekundu — na den to stačí, na road trip je to málo. Projeví se po restartu serveru.',
'settings.valhallaBase': 'Vlastní instance Valhalla',
'settings.valhallaBaseHint': 'Vlastní instance Valhalla. Ptáme se jí, když má úsek objet mýtné, dálnice nebo trajekty — veřejné servery OSRM to neumí zodpovědět. Prázdné použije veřejnou Valhallu od FOSSGIS, ledaže je výše uveden vlastní směrovací engine; pak se žádný druhý engine neptá. Projeví se po restartu serveru.',
'settings.valhallaBaseHint':
'TREK ve výchozím nastavení používá veřejnou Valhallu FOSSGIS k vyhýbání se mýtnému, dálnicím a trajektům. Zde můžete zadat URL vlastní Valhally a používat ji místo veřejné. Pokud je nastavena pouze vlastní směrovací instance, veřejná Valhalla se nepoužije. Po zadání vlastní URL restartujte server a znovu načtěte stránku.',
'settings.mapHint': 'URL šablony pro mapové dlaždice',
'settings.mapProvider': 'Poskytovatel mapy',
'settings.mapProviderHint': 'Ovlivňuje mapy v Trip Planneru a Journey. Atlas vždy používá Leaflet.',
+29
View File
@@ -1,6 +1,35 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'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",
'roadtrip.window.endHere': 'Tag hier beenden',
'roadtrip.window.endHereHint':
'In den Ortsdetails kannst du einen Ort als Tagesende festlegen, solange der Roadtrip-Modus und die täglichen Reisezeiten aktiv sind.',
'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.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.invalid': 'Das Tagesende muss nach dem Tagesbeginn liegen.',
'roadtrip.window.stop': 'Tagesende',
'roadtrip.window.resume': 'Weiterfahrt',
'roadtrip.window.pointHint': 'Hier pausiert deine Reise voraussichtlich über Nacht.',
'roadtrip.window.departure': 'Weiterfahrt nach dem restlichen Aufenthalt um {time}',
'roadtrip.window.showPoint': 'Auf Karte zeigen',
'roadtrip.window.incomplete': 'Tagespausen lassen sich erst berechnen, wenn alle Verbindungsrouten vorliegen.',
'roadtrip.window.conflict':
'Eine feste Uhrzeit passt nicht zu Fahrzeit und Tagespausen. Manuelle Zeiten bleiben unverändert; die automatische Aufteilung pausiert.',
'roadtrip.window.tooLong':
'Diese Reisezeiten erfordern mehr als 365 zusätzliche Tage. Wähle ein längeres Tagesfenster.',
'roadtrip.mode.roadtrip': 'Roadtrip',
'roadtrip.mode.days': 'Tage',
'roadtrip.mode.label': 'Plan-Ansicht',
+2 -1
View File
@@ -28,7 +28,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Eigene Routing-Instanz',
'settings.routingBaseHint': 'Eine eigene OSRM-Instanz. Leer nutzt die öffentlichen Server, die etwa eine Anfrage pro Sekunde erlauben — für einen Tag genug, für einen Roadtrip knapp. Wirkt erst nach einem Serverneustart.',
'settings.valhallaBase': 'Eigene Valhalla-Instanz',
'settings.valhallaBaseHint': 'Eine eigene Valhalla-Instanz. Sie wird gefragt, wenn eine Etappe Maut, Autobahn oder Fähre meiden soll — die öffentlichen OSRM-Server können das nicht. Leer nutzt die öffentliche FOSSGIS-Valhalla, außer oben steht schon eine eigene Routing-Instanz; dann wird gar keine zweite Maschine gefragt. Wirkt erst nach einem Serverneustart.',
'settings.valhallaBaseHint':
'Zum Meiden von Mautstraßen, Autobahnen und Fähren nutzt TREK standardmäßig die öffentliche FOSSGIS-Valhalla. Hier kannst du stattdessen eine eigene Valhalla-URL eintragen. Ist nur eine eigene Routing-Instanz konfiguriert, wird die öffentliche Valhalla nicht verwendet. Nach dem Eintragen einer eigenen URL den Server neu starten und die Seite neu laden.',
'settings.mapHint': 'URL-Template für die Kartenkacheln',
'settings.mapProvider': 'Kartenanbieter',
'settings.mapProviderHint': 'Gilt für Trip Planner und Journey. Atlas nutzt immer Leaflet.',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'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 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.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.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 365 extra days. Choose a longer daily window.',
'roadtrip.mode.roadtrip': 'Road trip',
'roadtrip.mode.days': 'Days',
'roadtrip.mode.label': 'Plan view',
+2 -1
View File
@@ -36,7 +36,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Own routing engine',
'settings.routingBaseHint': 'An OSRM instance of your own. Empty uses the public servers, which allow about one request a second — enough for a day, tight for a road trip. Takes effect after a server restart.',
'settings.valhallaBase': 'Own Valhalla instance',
'settings.valhallaBaseHint': 'A Valhalla of your own. It is asked when a leg should avoid tolls, motorways or ferries — the public OSRM servers cannot answer that. Empty uses the public FOSSGIS Valhalla, unless an own routing engine is named above, in which case no second engine is asked at all. Takes effect after a server restart.',
'settings.valhallaBaseHint':
'TREK uses the public FOSSGIS Valhalla by default to avoid toll roads, motorways and ferries. Enter your own Valhalla URL here to use it instead. If only a custom routing instance is configured, the public Valhalla is not used. After entering a custom URL, restart the server and reload the page.',
'settings.mapHint': 'URL template for map tiles',
'settings.mapProvider': 'Map Provider',
'settings.mapProviderHint': 'Affects Trip Planner and Journey maps. Atlas always uses Leaflet.',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Con conexión, arrastra el fin del día por la ruta o hasta un lugar; haz clic derecho para restaurar el final automático.",
'roadtrip.window.resetBoundaries': "Restaurar finales de día automáticos",
'roadtrip.window.endHere': 'Terminar el día aquí',
'roadtrip.window.endHereHint':
'Puedes terminar el día en una parada concreta desde sus detalles cuando el modo Roadtrip y los horarios diarios estén activos.',
'roadtrip.window.endAt': 'Final del día',
'roadtrip.window.onRoute': 'En la ruta',
'roadtrip.window.atStop': 'En el último lugar',
'roadtrip.window.routeHint': 'Pausar en la ruta al alcanzar la hora de finalización.',
'roadtrip.window.stopHint': 'Quedarse en el último lugar si no se puede llegar al siguiente antes del final del día.',
'roadtrip.window.legTooLong':
'Un trayecto supera el horario diario. Añade un lugar por el camino o elige pausar en la ruta.',
'roadtrip.window.pointLabel': 'Final del día {day} a las {time}',
'roadtrip.window.title': 'Horario diario',
'roadtrip.window.start': 'Inicio del día',
'roadtrip.window.end': 'Fin del día',
'roadtrip.window.hint':
'Indica ambas horas para planificar pausas diarias. Vacía una para desactivarlas. Las horas manuales tienen prioridad. Los días se conectan automáticamente.',
'roadtrip.window.invalid': 'La hora de fin debe ser posterior a la de inicio.',
'roadtrip.window.stop': 'Fin del día',
'roadtrip.window.resume': 'Continuar viaje',
'roadtrip.window.pointHint': 'Este es el punto estimado de pausa durante la noche.',
'roadtrip.window.departure': 'Continuar tras el resto de la visita a las {time}',
'roadtrip.window.showPoint': 'Mostrar en el mapa',
'roadtrip.window.incomplete': 'Las pausas diarias necesitan todas las rutas de conexión para calcularse.',
'roadtrip.window.conflict':
'Una hora fija entra en conflicto con el trayecto y las pausas. Las horas manuales se conservan; la planificación automática está en pausa.',
'roadtrip.window.tooLong': 'Estos horarios requieren más de 365 días adicionales. Amplía el horario diario.',
'roadtrip.mode.roadtrip': 'Viaje por carretera',
'roadtrip.mode.days': 'Días',
'roadtrip.mode.label': 'Vista del plan',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Motor de rutas propio',
'settings.routingBaseHint': 'Una instancia propia de OSRM. Vacío usa los servidores públicos, que permiten cerca de una petición por segundo: suficiente para un día, justo para una ruta larga. Surte efecto tras reiniciar el servidor.',
'settings.valhallaBase': 'Instancia de Valhalla propia',
'settings.valhallaBaseHint': 'Una instancia de Valhalla propia. Se consulta cuando un tramo debe evitar peajes, autopistas o ferris: los servidores OSRM públicos no pueden responder a eso. Vacío usa el Valhalla público de FOSSGIS, salvo que arriba se indique un motor de rutas propio, en cuyo caso no se consulta ningún segundo motor. Surte efecto tras reiniciar el servidor.',
'settings.valhallaBaseHint':
'TREK usa por defecto la Valhalla pública de FOSSGIS para evitar peajes, autopistas y ferris. Introduce aquí la URL de tu propia Valhalla para usarla en su lugar. Si solo se configura una instancia de rutas propia, no se utiliza la Valhalla pública. Tras introducir una URL propia, reinicia el servidor y recarga la página.',
'settings.mapHint': 'Plantilla de URL para los mosaicos del mapa',
'settings.mapProvider': 'Proveedor de mapa',
'settings.mapProviderHint': 'Afecta a los mapas de Trip Planner y Journey. Atlas siempre usa Leaflet.',
+29
View File
@@ -1,6 +1,35 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "En ligne, faites glisser la fin de journée sur le trajet ou sur un lieu ; un clic droit rétablit la fin automatique.",
'roadtrip.window.resetBoundaries': "Rétablir les fins de journée automatiques",
'roadtrip.window.endHere': 'Terminer la journée ici',
'roadtrip.window.endHereHint':
'Vous pouvez terminer une journée à une étape précise dans ses détails lorsque le mode Roadtrip et les horaires quotidiens sont actifs.',
'roadtrip.window.endAt': 'Fin de journée',
'roadtrip.window.onRoute': 'Sur le trajet',
'roadtrip.window.atStop': 'Au dernier lieu',
'roadtrip.window.routeHint': 'Faire une pause sur le trajet à l’heure de fin.',
'roadtrip.window.stopHint': 'Rester au dernier lieu si le suivant ne peut pas être atteint avant la fin de journée.',
'roadtrip.window.legTooLong':
'Un trajet dépasse la plage horaire quotidienne. Ajoutez un lieu en chemin ou choisissez une pause sur le trajet.',
'roadtrip.window.pointLabel': 'Fin du jour {day} à {time}',
'roadtrip.window.title': 'Horaires quotidiens',
'roadtrip.window.start': 'Début de journée',
'roadtrip.window.end': 'Fin de journée',
'roadtrip.window.hint':
'Renseignez les deux heures pour prévoir les pauses. Effacez-en une pour désactiver cette option. Les heures manuelles sont prioritaires. Les journées sont reliées automatiquement.',
'roadtrip.window.invalid': 'La fin doit être postérieure au début de journée.',
'roadtrip.window.stop': 'Fin de journée',
'roadtrip.window.resume': 'Reprendre le trajet',
'roadtrip.window.pointHint': 'Votre voyage devrait faire une pause ici pour la nuit.',
'roadtrip.window.departure': 'Repartir après le reste de la visite à {time}',
'roadtrip.window.showPoint': 'Voir sur la carte',
'roadtrip.window.incomplete': 'Toutes les liaisons doivent être disponibles pour calculer les pauses quotidiennes.',
'roadtrip.window.conflict':
'Une heure fixe est incompatible avec le trajet et les pauses. Les heures manuelles sont conservées ; la planification automatique est suspendue.',
'roadtrip.window.tooLong':
'Ces horaires nécessitent plus de 365 jours supplémentaires. Élargissez la plage horaire quotidienne.',
'roadtrip.mode.roadtrip': 'Road trip',
'roadtrip.mode.days': 'Jours',
'roadtrip.mode.label': 'Vue du plan',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Moteur de calcul d’itinéraire propre',
'settings.routingBaseHint': 'Votre propre instance OSRM. Vide utilise les serveurs publics, limités à environ une requête par seconde : suffisant pour une journée, juste pour un road trip. Prend effet après un redémarrage du serveur.',
'settings.valhallaBase': 'Instance Valhalla propre',
'settings.valhallaBaseHint': 'Votre propre instance Valhalla. Elle est interrogée quand une étape doit éviter les péages, les autoroutes ou les ferries — les serveurs OSRM publics ne savent pas répondre à cela. Vide utilise le Valhalla public de FOSSGIS, sauf si un moteur de calcul d’itinéraire propre est indiqué ci-dessus, auquel cas aucun second moteur n’est interrogé. Prend effet après un redémarrage du serveur.',
'settings.valhallaBaseHint':
'TREK utilise par défaut la Valhalla publique de FOSSGIS pour éviter les péages, autoroutes et ferries. Saisissez ici l’URL de votre propre Valhalla pour l’utiliser à la place. Si seule une instance de routage personnalisée est configurée, la Valhalla publique n’est pas utilisée. Après avoir saisi une URL personnalisée, redémarrez le serveur et rechargez la page.',
'settings.mapHint': "Modèle d'URL pour les tuiles de carte",
'settings.mapProvider': 'Fournisseur de carte',
'settings.mapProviderHint': 'Affecte les cartes Trip Planner et Journey. Atlas utilise toujours Leaflet.',
+30
View File
@@ -1,6 +1,36 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Με σύνδεση, σύρετε το τέλος της ημέρας στη διαδρομή ή σε ένα μέρος· με δεξί κλικ επαναφέρετε το αυτόματο τέλος.",
'roadtrip.window.resetBoundaries': "Επαναφορά αυτόματων ορίων ημέρας",
'roadtrip.window.endHere': 'Τέλος ημέρας εδώ',
'roadtrip.window.endHereHint':
'Μπορείτε να ορίσετε μια στάση ως τέλος ημέρας στις λεπτομέρειες του μέρους, όταν είναι ενεργά το Roadtrip και τα ημερήσια ωράρια ταξιδιού.',
'roadtrip.window.endAt': 'Τέλος ημέρας',
'roadtrip.window.onRoute': 'Στη διαδρομή',
'roadtrip.window.atStop': 'Στο τελευταίο μέρος',
'roadtrip.window.routeHint': 'Παύση στη διαδρομή όταν φτάσει η ώρα λήξης.',
'roadtrip.window.stopHint':
'Παραμονή στο τελευταίο μέρος αν το επόμενο δεν είναι προσβάσιμο πριν το τέλος της ημέρας.',
'roadtrip.window.legTooLong':
'Μια διαδρομή υπερβαίνει το ημερήσιο ωράριο. Προσθέστε ένα μέρος καθ’ οδόν ή επιλέξτε παύση στη διαδρομή.',
'roadtrip.window.pointLabel': 'Τέλος ημέρας {day} στις {time}',
'roadtrip.window.title': 'Καθημερινές ώρες ταξιδιού',
'roadtrip.window.start': 'Έναρξη ημέρας',
'roadtrip.window.end': 'Λήξη ημέρας',
'roadtrip.window.hint':
'Ορίστε και τις δύο ώρες για καθημερινές παύσεις. Αφήστε μία κενή για απενεργοποίηση. Οι χειροκίνητες ώρες έχουν προτεραιότητα. Οι ημέρες συνδέονται αυτόματα.',
'roadtrip.window.invalid': 'Η ώρα λήξης πρέπει να είναι μετά την ώρα έναρξης.',
'roadtrip.window.stop': 'Τέλος ημέρας',
'roadtrip.window.resume': 'Συνέχεια ταξιδιού',
'roadtrip.window.pointHint': 'Αυτό είναι το εκτιμώμενο σημείο της νυχτερινής σας στάσης.',
'roadtrip.window.departure': 'Συνέχεια μετά την υπόλοιπη επίσκεψη στις {time}',
'roadtrip.window.showPoint': 'Προβολή στον χάρτη',
'roadtrip.window.incomplete': 'Απαιτούνται όλες οι συνδετικές διαδρομές για τον υπολογισμό των καθημερινών παύσεων.',
'roadtrip.window.conflict':
'Μια σταθερή ώρα συγκρούεται με την οδήγηση και τις παύσεις. Οι χειροκίνητες ώρες διατηρούνται· ο αυτόματος σχεδιασμός έχει παύσει.',
'roadtrip.window.tooLong':
'Αυτές οι ώρες απαιτούν πάνω από 365 επιπλέον ημέρες. Επιλέξτε μεγαλύτερο ημερήσιο διάστημα.',
'roadtrip.mode.roadtrip': 'Οδικό ταξίδι',
'roadtrip.mode.days': 'Ημέρες',
'roadtrip.mode.label': 'Προβολή σχεδίου',
+2 -1
View File
@@ -28,7 +28,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Δική σας μηχανή δρομολόγησης',
'settings.routingBaseHint': 'Δική σας εγκατάσταση OSRM. Κενό σημαίνει τους δημόσιους διακομιστές, που επιτρέπουν περίπου ένα αίτημα ανά δευτερόλεπτο: αρκεί για μία ημέρα, λίγο για ένα οδικό ταξίδι. Ισχύει μετά από επανεκκίνηση του διακομιστή.',
'settings.valhallaBase': 'Δική σας υπηρεσία Valhalla',
'settings.valhallaBaseHint': 'Δική σας υπηρεσία Valhalla. Ρωτιέται όταν ένα σκέλος πρέπει να αποφύγει διόδια, αυτοκινητόδρομους ή φέρι — οι δημόσιοι διακομιστές OSRM δεν μπορούν να απαντήσουν σε αυτό. Κενό χρησιμοποιεί το δημόσιο Valhalla του FOSSGIS, εκτός αν παραπάνω δηλώνεται δική σας μηχανή δρομολόγησης, οπότε δεν ρωτιέται καμία δεύτερη μηχανή. Ισχύει μετά από επανεκκίνηση του διακομιστή.',
'settings.valhallaBaseHint':
'Το TREK χρησιμοποιεί από προεπιλογή τη δημόσια Valhalla της FOSSGIS για την αποφυγή διοδίων, αυτοκινητοδρόμων και πορθμείων. Εισαγάγετε εδώ τη διεύθυνση URL της δικής σας Valhalla για να τη χρησιμοποιήσετε αντί της δημόσιας. Αν έχει ρυθμιστεί μόνο ιδιωτική υπηρεσία δρομολόγησης, η δημόσια Valhalla δεν χρησιμοποιείται. Αφού εισαγάγετε ιδιωτική διεύθυνση URL, επανεκκινήστε τον διακομιστή και φορτώστε ξανά τη σελίδα.',
'settings.mapHint': 'Πρότυπο URL για πλακίδια χάρτη',
'settings.mapProvider': 'Πάροχος Χάρτη',
'settings.mapProviderHint':
+29
View File
@@ -1,6 +1,35 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Online húzza a nap végét az útvonalon vagy egy helyre; jobb kattintással visszaállíthatja az automatikus befejezést.",
'roadtrip.window.resetBoundaries': "Automatikus napvégek visszaállítása",
'roadtrip.window.endHere': 'Nap befejezése itt',
'roadtrip.window.endHereHint':
'A hely részleteinél jelölhetsz ki megállót a nap végének, ha a Roadtrip mód és a napi utazási idők aktívak.',
'roadtrip.window.endAt': 'Nap lezárása',
'roadtrip.window.onRoute': 'Az útvonalon',
'roadtrip.window.atStop': 'Az utolsó helyen',
'roadtrip.window.routeHint': 'Megállás az útvonalon a befejezési idő elérésekor.',
'roadtrip.window.stopHint': 'Maradjon az utolsó helyen, ha a következő nem érhető el a nap vége előtt.',
'roadtrip.window.legTooLong':
'Egy útszakasz hosszabb a napi időkeretnél. Adjon hozzá egy helyet útközben, vagy válasszon megállást az útvonalon.',
'roadtrip.window.pointLabel': 'A(z) {day}. nap vége {time}-kor',
'roadtrip.window.title': 'Napi utazási időszak',
'roadtrip.window.start': 'Nap kezdete',
'roadtrip.window.end': 'Nap vége',
'roadtrip.window.hint':
'A napi szünetekhez add meg mindkét időpontot. Egy mező törlése kikapcsolja az automatikát. A kézi időpontok elsőbbséget élveznek. A napok automatikusan összekapcsolódnak.',
'roadtrip.window.invalid': 'A befejezésnek a kezdés után kell lennie.',
'roadtrip.window.stop': 'Nap vége',
'roadtrip.window.resume': 'Utazás folytatása',
'roadtrip.window.pointHint': 'Ez az éjszakai pihenő becsült helye.',
'roadtrip.window.departure': 'Továbbindulás a látogatás hátralévő része után: {time}',
'roadtrip.window.showPoint': 'Megjelenítés a térképen',
'roadtrip.window.incomplete': 'A napi szünetek kiszámításához minden összekötő útvonal szükséges.',
'roadtrip.window.conflict':
'Egy rögzített időpont ütközik az utazással és a szünetekkel. A kézi időpontok megmaradnak; az automatikus tervezés szünetel.',
'roadtrip.window.tooLong':
'Ezek az időpontok több mint 365 további napot igényelnének. Válassz hosszabb napi időszakot.',
'roadtrip.mode.roadtrip': 'Autós út',
'roadtrip.mode.days': 'Napok',
'roadtrip.mode.label': 'Terv nézet',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Saját útvonaltervező',
'settings.routingBaseHint': 'Saját OSRM-példány. Üresen hagyva a nyilvános kiszolgálókat használja, amelyek másodpercenként körülbelül egy kérést engednek — egy napra elég, egy autós útra kevés. A kiszolgáló újraindítása után lép életbe.',
'settings.valhallaBase': 'Saját Valhalla-példány',
'settings.valhallaBaseHint': 'Saját Valhalla-példány. Akkor kérdezzük meg, ha egy szakasznak kerülnie kell a fizetős utakat, az autópályákat vagy a kompokat — a nyilvános OSRM-kiszolgálók erre nem tudnak válaszolni. Üresen a FOSSGIS nyilvános Valhalláját használja, kivéve ha fent saját útvonaltervező szerepel; akkor egyáltalán nem kérdezünk második motort. A szerver újraindítása után lép életbe.',
'settings.valhallaBaseHint':
'A TREK alapértelmezés szerint a FOSSGIS nyilvános Valhalláját használja a fizetős utak, autópályák és kompok elkerüléséhez. Itt megadhatja saját Valhallája URL-jét, hogy azt használja helyette. Ha csak saját útvonaltervező van beállítva, a nyilvános Valhalla nem használatos. Saját URL megadása után indítsa újra a szervert, és töltse újra az oldalt.',
'settings.mapHint': 'URL sablon a térképcsempékhez',
'settings.mapProvider': 'Térkép szolgáltató',
'settings.mapProviderHint': 'A Trip Planner és Journey térképekre érvényes. Az Atlas mindig Leafletet használ.',
+29
View File
@@ -1,6 +1,35 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Saat online, seret akhir hari di sepanjang rute atau ke suatu tempat; klik kanan untuk memulihkan akhir otomatis.",
'roadtrip.window.resetBoundaries': "Pulihkan akhir hari otomatis",
'roadtrip.window.endHere': 'Akhiri hari di sini',
'roadtrip.window.endHereHint':
'Anda dapat mengakhiri hari di pemberhentian tertentu melalui detail tempat saat mode Roadtrip dan waktu perjalanan harian aktif.',
'roadtrip.window.endAt': 'Akhir hari',
'roadtrip.window.onRoute': 'Di sepanjang rute',
'roadtrip.window.atStop': 'Di tempat terakhir',
'roadtrip.window.routeHint': 'Berhenti di sepanjang rute saat waktu akhir tercapai.',
'roadtrip.window.stopHint': 'Tetap di tempat terakhir jika tempat berikutnya tidak dapat dicapai sebelum akhir hari.',
'roadtrip.window.legTooLong':
'Satu perjalanan melebihi rentang waktu harian. Tambahkan tempat di sepanjang jalan atau pilih berhenti di rute.',
'roadtrip.window.pointLabel': 'Akhir hari {day} pukul {time}',
'roadtrip.window.title': 'Waktu perjalanan harian',
'roadtrip.window.start': 'Awal hari',
'roadtrip.window.end': 'Akhir hari',
'roadtrip.window.hint':
'Atur kedua waktu untuk merencanakan jeda harian. Kosongkan salah satunya untuk menonaktifkan. Waktu manual diprioritaskan. Hari dihubungkan otomatis.',
'roadtrip.window.invalid': 'Waktu akhir harus setelah waktu mulai.',
'roadtrip.window.stop': 'Akhir hari',
'roadtrip.window.resume': 'Lanjutkan perjalanan',
'roadtrip.window.pointHint': 'Ini perkiraan titik jeda perjalanan Anda untuk bermalam.',
'roadtrip.window.departure': 'Lanjutkan setelah sisa kunjungan pada {time}',
'roadtrip.window.showPoint': 'Tampilkan di peta',
'roadtrip.window.incomplete': 'Semua rute penghubung diperlukan untuk menghitung jeda harian.',
'roadtrip.window.conflict':
'Waktu tetap bertentangan dengan perjalanan dan jeda. Waktu manual tidak berubah; perencanaan otomatis dijeda.',
'roadtrip.window.tooLong':
'Waktu ini memerlukan lebih dari 365 hari tambahan. Pilih rentang waktu harian yang lebih panjang.',
'roadtrip.mode.roadtrip': 'Perjalanan darat',
'roadtrip.mode.days': 'Hari',
'roadtrip.mode.label': 'Tampilan rencana',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Mesin rute sendiri',
'settings.routingBaseHint': 'Instans OSRM milik sendiri. Kosong berarti server publik, yang mengizinkan sekitar satu permintaan per detik — cukup untuk sehari, mepet untuk perjalanan darat. Berlaku setelah server dimulai ulang.',
'settings.valhallaBase': 'Instans Valhalla sendiri',
'settings.valhallaBaseHint': 'Instans Valhalla sendiri. Ia ditanya ketika satu ruas harus menghindari tol, jalan bebas hambatan, atau feri — server OSRM publik tidak bisa menjawabnya. Kosong memakai Valhalla publik dari FOSSGIS, kecuali di atas sudah diisi mesin rute sendiri; maka tidak ada mesin kedua yang ditanya. Berlaku setelah server dijalankan ulang.',
'settings.valhallaBaseHint':
'Secara bawaan, TREK menggunakan Valhalla publik FOSSGIS untuk menghindari tol, jalan bebas hambatan, dan feri. Masukkan URL Valhalla Anda sendiri di sini untuk menggunakannya sebagai pengganti. Jika hanya instans perutean sendiri yang dikonfigurasi, Valhalla publik tidak digunakan. Setelah memasukkan URL sendiri, mulai ulang server dan muat ulang halaman.',
'settings.mapHint': 'Template URL untuk tile peta',
'settings.mapProvider': 'Penyedia peta',
'settings.mapProviderHint': 'Berlaku untuk peta Trip Planner dan Journey. Atlas selalu menggunakan Leaflet.',
+29
View File
@@ -1,6 +1,35 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Online, trascina la fine della giornata lungo il percorso o su un luogo; fai clic destro per ripristinare la fine automatica.",
'roadtrip.window.resetBoundaries': "Ripristina le fini giornata automatiche",
'roadtrip.window.endHere': 'Termina la giornata qui',
'roadtrip.window.endHereHint':
'Puoi terminare la giornata in una tappa specifica dai suoi dettagli quando la modalità Roadtrip e gli orari giornalieri sono attivi.',
'roadtrip.window.endAt': 'Fine giornata',
'roadtrip.window.onRoute': 'Lungo il percorso',
'roadtrip.window.atStop': 'Nell’ultimo luogo',
'roadtrip.window.routeHint': 'Fermarsi lungo il percorso all’ora di fine giornata.',
'roadtrip.window.stopHint': 'Restare nell’ultimo luogo se non si può raggiungere il successivo entro fine giornata.',
'roadtrip.window.legTooLong':
'Un tragitto supera la fascia oraria giornaliera. Aggiungi un luogo lungo il percorso o scegli una pausa lungo il tragitto.',
'roadtrip.window.pointLabel': 'Fine del giorno {day} alle {time}',
'roadtrip.window.title': 'Orari giornalieri',
'roadtrip.window.start': 'Inizio giornata',
'roadtrip.window.end': 'Fine giornata',
'roadtrip.window.hint':
'Imposta entrambi gli orari per pianificare le pause. Svuota un campo per disattivarle. Gli orari manuali hanno priorità. I giorni vengono collegati automaticamente.',
'roadtrip.window.invalid': "L'orario finale deve essere successivo a quello iniziale.",
'roadtrip.window.stop': 'Fine giornata',
'roadtrip.window.resume': 'Riprendi il viaggio',
'roadtrip.window.pointHint': 'Questo è il punto previsto per la pausa notturna.',
'roadtrip.window.departure': 'Ripartire dopo il resto della visita alle {time}',
'roadtrip.window.showPoint': 'Mostra sulla mappa',
'roadtrip.window.incomplete': 'Per calcolare le pause giornaliere servono tutti i percorsi di collegamento.',
'roadtrip.window.conflict':
'Un orario fisso è incompatibile con il tragitto e le pause. Gli orari manuali restano invariati; la pianificazione automatica è sospesa.',
'roadtrip.window.tooLong':
'Questi orari richiederebbero oltre 365 giorni aggiuntivi. Scegli un intervallo giornaliero più lungo.',
'roadtrip.mode.roadtrip': 'Viaggio su strada',
'roadtrip.mode.days': 'Giorni',
'roadtrip.mode.label': 'Vista del piano',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Motore di percorso proprio',
'settings.routingBaseHint': 'Una tua istanza OSRM. Vuoto usa i server pubblici, che consentono circa una richiesta al secondo: sufficiente per un giorno, poco per un viaggio in auto. Ha effetto dopo il riavvio del server.',
'settings.valhallaBase': 'Istanza Valhalla propria',
'settings.valhallaBaseHint': 'Una istanza Valhalla propria. Viene interrogata quando una tappa deve evitare pedaggi, autostrade o traghetti: i server OSRM pubblici non sanno rispondere. Vuoto usa il Valhalla pubblico di FOSSGIS, a meno che sopra non sia indicato un motore di routing proprio, nel qual caso non viene interrogato alcun secondo motore. Ha effetto dopo il riavvio del server.',
'settings.valhallaBaseHint':
'TREK usa per impostazione predefinita la Valhalla pubblica di FOSSGIS per evitare pedaggi, autostrade e traghetti. Inserisci qui l’URL della tua Valhalla per usarla al suo posto. Se è configurata solo un’istanza di routing personalizzata, la Valhalla pubblica non viene usata. Dopo aver inserito un URL personalizzato, riavvia il server e ricarica la pagina.',
'settings.mapHint': 'Modello URL per i tile della mappa',
'settings.mapProvider': 'Provider mappa',
'settings.mapProviderHint': 'Influisce sulle mappe Trip Planner e Journey. Atlas usa sempre Leaflet.',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "オンライン時は一日の終了地点をルート上や場所へドラッグできます。右クリックで自動の終了地点に戻せます。",
'roadtrip.window.resetBoundaries': "一日の終了地点を自動に戻す",
'roadtrip.window.endHere': 'ここで一日を終了',
'roadtrip.window.endHereHint':
'Roadtripモードと毎日の移動時間が有効な場合、場所の詳細から特定の立ち寄り先を一日の終点に設定できます。',
'roadtrip.window.endAt': '1日の終了地点',
'roadtrip.window.onRoute': 'ルートの途中',
'roadtrip.window.atStop': '最後の場所',
'roadtrip.window.routeHint': '終了時刻になったら、ルート上の到達地点で休止します。',
'roadtrip.window.stopHint': '終了時刻までに次の場所へ到着できない場合は、最後の場所に留まります。',
'roadtrip.window.legTooLong':
'1区間の移動時間が1日の時間枠を超えています。途中に場所を追加するか、ルートの途中で休止する設定を選んでください。',
'roadtrip.window.pointLabel': '{day}日目の終了時刻は{time}',
'roadtrip.window.title': '毎日の移動時間',
'roadtrip.window.start': '一日の開始時刻',
'roadtrip.window.end': '一日の終了時刻',
'roadtrip.window.hint':
'両方の時刻を設定すると毎日の休憩を計画します。どちらかを空欄にすると無効になります。手動の時刻が優先され、各日のルートは自動で接続されます。',
'roadtrip.window.invalid': '終了時刻は開始時刻より後にしてください。',
'roadtrip.window.stop': '一日の終了',
'roadtrip.window.resume': '移動を再開',
'roadtrip.window.pointHint': 'ここが夜間の休止地点になる見込みです。',
'roadtrip.window.departure': '残りの滞在後、{time}に出発',
'roadtrip.window.showPoint': '地図で表示',
'roadtrip.window.incomplete': '毎日の休憩を計算するには、すべての接続ルートが必要です。',
'roadtrip.window.conflict':
'固定時刻が移動や休憩と両立しません。手動の時刻は保持され、自動計画は一時停止しています。',
'roadtrip.window.tooLong': 'この設定では365日を超える追加日数が必要です。一日の移動時間を長くしてください。',
'roadtrip.mode.roadtrip': 'ロードトリップ',
'roadtrip.mode.days': '日ごと',
'roadtrip.mode.label': 'プラン表示',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': '自前のルーティングサーバー',
'settings.routingBaseHint': '自前の OSRM インスタンス。空欄なら公開サーバーを使いますが、毎秒 1 リクエスト程度の制限があり、1 日分には足りてもロードトリップには足りません。サーバー再起動後に反映されます。',
'settings.valhallaBase': '自前の Valhalla インスタンス',
'settings.valhallaBaseHint': '自前の Valhalla インスタンス。有料道路・高速道路・フェリーを避けたい区間で問い合わせます。公開の OSRM サーバーはこれに答えられません。空欄なら FOSSGIS の公開 Valhalla を使いますが、上で自前のルーティングサーバーを指定している場合は二つ目のエンジンを一切問い合わせません。サーバー再起動後に反映されます。',
'settings.valhallaBaseHint':
'TREKは、有料道路、高速道路、フェリーを避けるために、標準でFOSSGISの公開Valhallaを使用します。独自のValhallaを代わりに使う場合は、ここにURLを入力してください。独自のルーティングサーバーのみが設定されている場合、公開Valhallaは使用されません。独自のURLを入力した後は、サーバーを再起動し、ページを再読み込みしてください。',
'settings.mapHint': '地図タイルのURLテンプレート',
'settings.mapProvider': '地図プロバイダー',
'settings.mapProviderHint': '旅程プランナーと日記地図に影響します。Atlas は常に Leaflet を使用します。',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "온라인에서 하루 종료 지점을 경로나 장소로 드래그하고, 오른쪽 클릭으로 자동 종료를 복원할 수 있습니다.",
'roadtrip.window.resetBoundaries': "자동 하루 종료 복원",
'roadtrip.window.endHere': '여기서 하루 종료',
'roadtrip.window.endHereHint':
'Roadtrip 모드와 일일 이동 시간이 활성화된 경우 장소 상세에서 특정 경유지를 하루의 종점으로 설정할 수 있습니다.',
'roadtrip.window.endAt': '하루 종료 지점',
'roadtrip.window.onRoute': '경로 중간',
'roadtrip.window.atStop': '마지막 장소',
'roadtrip.window.routeHint': '종료 시간이 되면 경로의 도달 지점에서 멈춥니다.',
'roadtrip.window.stopHint': '하루 종료 전 다음 장소에 도착할 수 없으면 마지막 장소에 머뭅니다.',
'roadtrip.window.legTooLong':
'한 구간의 이동 시간이 하루 시간 범위를 초과합니다. 중간에 장소를 추가하거나 경로 중간에서 멈추도록 선택하세요.',
'roadtrip.window.pointLabel': '{day}일차 종료 시간 {time}',
'roadtrip.window.title': '일일 이동 시간',
'roadtrip.window.start': '하루 시작 시간',
'roadtrip.window.end': '하루 종료 시간',
'roadtrip.window.hint':
'매일 휴식을 계획하려면 두 시간을 모두 설정하세요. 하나를 비우면 해제됩니다. 수동 시간이 우선하며 날짜별 경로는 자동으로 연결됩니다.',
'roadtrip.window.invalid': '종료 시간은 시작 시간보다 늦어야 합니다.',
'roadtrip.window.stop': '하루 일정 종료',
'roadtrip.window.resume': '여행 계속',
'roadtrip.window.pointHint': '여기가 예상되는 야간 휴식 지점입니다.',
'roadtrip.window.departure': '남은 방문을 마친 후 {time}에 출발',
'roadtrip.window.showPoint': '지도에서 보기',
'roadtrip.window.incomplete': '매일 휴식을 계산하려면 모든 연결 경로가 필요합니다.',
'roadtrip.window.conflict':
'고정 시간이 이동 및 휴식과 충돌합니다. 수동 시간은 유지되며 자동 계획이 일시 중지됩니다.',
'roadtrip.window.tooLong': '이 시간 설정에는 365일이 넘는 추가 날짜가 필요합니다. 일일 이동 시간을 늘려 주세요.',
'roadtrip.mode.roadtrip': '로드트립',
'roadtrip.mode.days': '일자별',
'roadtrip.mode.label': '계획 보기',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': '자체 경로 서버',
'settings.routingBaseHint': '자체 OSRM 인스턴스입니다. 비워 두면 초당 약 한 번의 요청만 허용하는 공개 서버를 사용합니다. 하루치는 충분하지만 로드트립에는 빠듯합니다. 서버를 다시 시작해야 적용됩니다.',
'settings.valhallaBase': '자체 Valhalla 인스턴스',
'settings.valhallaBaseHint': '자체 Valhalla 인스턴스. 구간에서 통행료, 고속도로, 페리를 피해야 할 때 이 서버에 묻습니다. 공개 OSRM 서버는 이에 답하지 못합니다. 비워 두면 FOSSGIS의 공개 Valhalla를 쓰지만, 위에 자체 라우팅 서버를 적어 두었다면 두 번째 엔진은 아예 묻지 않습니다. 서버를 다시 시작한 뒤에 적용됩니다.',
'settings.valhallaBaseHint':
'TREK은 기본적으로 유료 도로, 고속도로, 페리를 피하기 위해 FOSSGIS의 공개 Valhalla를 사용합니다. 대신 자체 Valhalla를 사용하려면 여기에 URL을 입력하세요. 자체 라우팅 서버만 설정된 경우 공개 Valhalla는 사용되지 않습니다. 자체 URL을 입력한 후 서버를 재시작하고 페이지를 새로고침하세요.',
'settings.mapHint': '지도 타일 URL 템플릿',
'settings.mapProvider': '지도 공급자',
'settings.mapProviderHint': '여행 플래너 및 Journey 지도에 영향을 줍니다. Atlas는 항상 Leaflet을 사용합니다.',
+29
View File
@@ -1,6 +1,35 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Sleep online het dageinde langs de route of naar een plaats; klik met rechts om het automatische einde te herstellen.",
'roadtrip.window.resetBoundaries': "Automatische dageinden herstellen",
'roadtrip.window.endHere': 'Dag hier beëindigen',
'roadtrip.window.endHereHint':
'Je kunt een stop als dageinde instellen in de plaatsdetails wanneer de Roadtrip-modus en dagelijkse reistijden actief zijn.',
'roadtrip.window.endAt': 'Dag afsluiten',
'roadtrip.window.onRoute': 'Onderweg',
'roadtrip.window.atStop': 'Bij de laatste plek',
'roadtrip.window.routeHint': 'Pauzeer onderweg zodra de eindtijd is bereikt.',
'roadtrip.window.stopHint': 'Blijf bij de laatste plek als de volgende niet voor het einde van de dag bereikbaar is.',
'roadtrip.window.legTooLong':
'Een rit duurt langer dan het dagelijkse tijdvenster. Voeg onderweg een plek toe of kies voor een pauze onderweg.',
'roadtrip.window.pointLabel': 'Einde van dag {day} om {time}',
'roadtrip.window.title': 'Dagelijkse reistijden',
'roadtrip.window.start': 'Begin van de dag',
'roadtrip.window.end': 'Einde van de dag',
'roadtrip.window.hint':
'Vul beide tijden in om dagelijkse pauzes te plannen. Maak één veld leeg om dit uit te zetten. Handmatige tijden gaan voor. Dagen worden automatisch verbonden.',
'roadtrip.window.invalid': 'De eindtijd moet na de begintijd liggen.',
'roadtrip.window.stop': 'Einde van de dag',
'roadtrip.window.resume': 'Reis hervatten',
'roadtrip.window.pointHint': 'Hier pauzeert je reis naar verwachting voor de nacht.',
'roadtrip.window.departure': 'Verder na het resterende bezoek om {time}',
'roadtrip.window.showPoint': 'Toon op kaart',
'roadtrip.window.incomplete':
'Dagelijkse pauzes kunnen pas worden berekend als alle verbindingsroutes beschikbaar zijn.',
'roadtrip.window.conflict':
'Een vaste tijd past niet bij de rit en pauzes. Handmatige tijden blijven behouden; automatische planning is gepauzeerd.',
'roadtrip.window.tooLong': 'Deze tijden vragen meer dan 365 extra dagen. Kies een langer dagelijks tijdvak.',
'roadtrip.mode.roadtrip': 'Roadtrip',
'roadtrip.mode.days': 'Dagen',
'roadtrip.mode.label': 'Planweergave',
+2 -1
View File
@@ -28,7 +28,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Eigen routeserver',
'settings.routingBaseHint': 'Een eigen OSRM-server. Leeg gebruikt de publieke servers, die ongeveer één verzoek per seconde toestaan — genoeg voor een dag, krap voor een roadtrip. Werkt na een herstart van de server.',
'settings.valhallaBase': 'Eigen Valhalla-instantie',
'settings.valhallaBaseHint': 'Een eigen Valhalla-instantie. Die wordt geraadpleegd wanneer een traject tol, snelwegen of veerboten moet vermijden — dat kunnen de publieke OSRM-servers niet beantwoorden. Leeg gebruikt de publieke FOSSGIS-Valhalla, tenzij hierboven een eigen routeringsmotor staat; dan wordt er helemaal geen tweede motor geraadpleegd. Werkt pas na een herstart van de server.',
'settings.valhallaBaseHint':
'TREK gebruikt standaard de publieke Valhalla van FOSSGIS om tolwegen, snelwegen en veerboten te vermijden. Vul hier de URL van je eigen Valhalla in om die te gebruiken. Als alleen een eigen routeringsinstantie is ingesteld, wordt de publieke Valhalla niet gebruikt. Herstart na het invoeren van een eigen URL de server en laad de pagina opnieuw.',
'settings.mapHint': 'URL-sjabloon voor kaarttegels',
'settings.mapProvider': 'Kaartprovider',
'settings.mapProviderHint': 'Geldt voor Trip Planner en Journey kaarten. Atlas gebruikt altijd Leaflet.',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Online przeciągnij koniec dnia wzdłuż trasy lub na miejsce; kliknij prawym przyciskiem, aby przywrócić automatyczny koniec.",
'roadtrip.window.resetBoundaries': "Przywróć automatyczne końce dni",
'roadtrip.window.endHere': 'Zakończ dzień tutaj',
'roadtrip.window.endHereHint':
'Możesz wybrać przystanek jako koniec dnia w szczegółach miejsca, gdy tryb Roadtrip i dzienne godziny podróży są aktywne.',
'roadtrip.window.endAt': 'Koniec dnia',
'roadtrip.window.onRoute': 'Na trasie',
'roadtrip.window.atStop': 'W ostatnim miejscu',
'roadtrip.window.routeHint': 'Zatrzymaj się na trasie o godzinie zakończenia dnia.',
'roadtrip.window.stopHint': 'Zostań w ostatnim miejscu, jeśli nie można dotrzeć do następnego przed końcem dnia.',
'roadtrip.window.legTooLong':
'Jeden odcinek przekracza dzienny przedział czasu. Dodaj miejsce po drodze lub wybierz postój na trasie.',
'roadtrip.window.pointLabel': 'Koniec dnia {day} o {time}',
'roadtrip.window.title': 'Dzienne godziny podróży',
'roadtrip.window.start': 'Początek dnia',
'roadtrip.window.end': 'Koniec dnia',
'roadtrip.window.hint':
'Ustaw obie godziny, aby planować codzienne przerwy. Wyczyść jedną, aby wyłączyć automatykę. Ręczne godziny mają pierwszeństwo. Dni są łączone automatycznie.',
'roadtrip.window.invalid': 'Godzina końca musi być późniejsza niż godzina początku.',
'roadtrip.window.stop': 'Koniec dnia',
'roadtrip.window.resume': 'Kontynuuj podróż',
'roadtrip.window.pointHint': 'To przewidywane miejsce nocnej przerwy w podróży.',
'roadtrip.window.departure': 'Dalsza podróż po pozostałej części wizyty o {time}',
'roadtrip.window.showPoint': 'Pokaż na mapie',
'roadtrip.window.incomplete': 'Obliczenie codziennych przerw wymaga wszystkich tras łączących.',
'roadtrip.window.conflict':
'Stała godzina koliduje z jazdą i przerwami. Ręczne godziny pozostają bez zmian; automatyczne planowanie jest wstrzymane.',
'roadtrip.window.tooLong': 'Te godziny wymagają ponad 365 dodatkowych dni. Wybierz dłuższy dzienny przedział.',
'roadtrip.mode.roadtrip': 'Podróż samochodowa',
'roadtrip.mode.days': 'Dni',
'roadtrip.mode.label': 'Widok planu',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Własny silnik tras',
'settings.routingBaseHint': 'Własna instancja OSRM. Puste używa serwerów publicznych, które pozwalają na około jedno zapytanie na sekundę — wystarczy na dzień, mało na road trip. Działa po restarcie serwera.',
'settings.valhallaBase': 'Własna instancja Valhalli',
'settings.valhallaBaseHint': 'Własna instancja Valhalli. Pytana wtedy, gdy odcinek ma omijać opłaty, autostrady lub promy — publiczne serwery OSRM nie potrafią na to odpowiedzieć. Puste używa publicznej Valhalli FOSSGIS, chyba że powyżej wskazano własny silnik tras; wtedy żaden drugi silnik nie jest pytany. Działa po ponownym uruchomieniu serwera.',
'settings.valhallaBaseHint':
'TREK domyślnie używa publicznej Valhalli FOSSGIS do omijania opłat, autostrad i promów. Wpisz tutaj URL własnej Valhalli, aby używać jej zamiast publicznej. Jeśli skonfigurowano tylko własną instancję wyznaczania tras, publiczna Valhalla nie jest używana. Po wpisaniu własnego adresu URL uruchom ponownie serwer i odśwież stronę.',
'settings.mapHint': 'Szablon URL dla kafelków mapy',
'settings.mapProvider': 'Dostawca mapy',
'settings.mapProviderHint': 'Dotyczy map Trip Planner i Journey. Atlas zawsze używa Leaflet.',
+29
View File
@@ -1,6 +1,35 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "В сети перетащите конец дня по маршруту или на место; щёлкните правой кнопкой для возврата к автоматическому завершению.",
'roadtrip.window.resetBoundaries': "Восстановить автоматические окончания дней",
'roadtrip.window.endHere': 'Завершить день здесь',
'roadtrip.window.endHereHint':
'В сведениях о месте можно завершить день на выбранной остановке, когда активны режим Roadtrip и ежедневное время поездки.',
'roadtrip.window.endAt': 'Завершение дня',
'roadtrip.window.onRoute': 'На маршруте',
'roadtrip.window.atStop': 'В последнем месте',
'roadtrip.window.routeHint': 'Остановиться на маршруте при наступлении времени окончания дня.',
'roadtrip.window.stopHint': 'Остаться в последнем месте, если до следующего нельзя доехать до конца дня.',
'roadtrip.window.legTooLong':
'Один переезд превышает дневной интервал. Добавьте место по пути или выберите остановку на маршруте.',
'roadtrip.window.pointLabel': 'Конец дня {day} в {time}',
'roadtrip.window.title': 'Ежедневное время в пути',
'roadtrip.window.start': 'Начало дня',
'roadtrip.window.end': 'Конец дня',
'roadtrip.window.hint':
'Задайте оба времени для ежедневных перерывов. Очистите одно поле, чтобы отключить расчёт. Ручные значения имеют приоритет. Дни соединяются автоматически.',
'roadtrip.window.invalid': 'Конец дня должен быть позже начала.',
'roadtrip.window.stop': 'Конец дня',
'roadtrip.window.resume': 'Продолжить поездку',
'roadtrip.window.pointHint': 'Здесь предполагается ночная остановка в пути.',
'roadtrip.window.departure': 'Продолжить после оставшейся части посещения в {time}',
'roadtrip.window.showPoint': 'Показать на карте',
'roadtrip.window.incomplete': 'Для расчёта ежедневных перерывов нужны все соединяющие маршруты.',
'roadtrip.window.conflict':
'Фиксированное время противоречит поездке и перерывам. Ручные значения сохранены; автоматическое планирование приостановлено.',
'roadtrip.window.tooLong':
'При этих настройках потребуется более 365 дополнительных дней. Увеличьте ежедневный интервал.',
'roadtrip.mode.roadtrip': 'Автопутешествие',
'roadtrip.mode.days': 'Дни',
'roadtrip.mode.label': 'Вид плана',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Собственный сервер маршрутов',
'settings.routingBaseHint': 'Собственный экземпляр OSRM. Пусто — используются публичные серверы с ограничением около одного запроса в секунду: на день хватает, для автопутешествия мало. Вступает в силу после перезапуска сервера.',
'settings.valhallaBase': 'Свой сервер Valhalla',
'settings.valhallaBaseHint': 'Свой сервер Valhalla. К нему обращаются, когда участок должен обойти платные дороги, автомагистрали или паромы — публичные серверы OSRM на это ответить не могут. Пусто использует публичный Valhalla от FOSSGIS, если выше не указан свой маршрутизатор; тогда второй движок не запрашивается вовсе. Действует после перезапуска сервера.',
'settings.valhallaBaseHint':
'По умолчанию TREK использует публичную Valhalla FOSSGIS для объезда платных дорог, автомагистралей и паромов. Введите здесь URL собственной Valhalla, чтобы использовать её вместо публичной. Если настроен только собственный сервер маршрутизации, публичная Valhalla не используется. После ввода собственного URL перезапустите сервер и обновите страницу.',
'settings.mapHint': 'URL-шаблон для тайлов карты',
'settings.mapProvider': 'Провайдер карты',
'settings.mapProviderHint': 'Применяется к Trip Planner и Journey. Atlas всегда использует Leaflet.',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Dra dagens slut längs rutten eller till en plats när du är online; högerklicka för att återställa det automatiska slutet.",
'roadtrip.window.resetBoundaries': "Återställ automatiska dagsslut",
'roadtrip.window.endHere': 'Avsluta dagen här',
'roadtrip.window.endHereHint':
'Du kan avsluta dagen vid ett visst stopp i platsens detaljer när Roadtrip-läget och dagliga restider är aktiva.',
'roadtrip.window.endAt': 'Avsluta dagen',
'roadtrip.window.onRoute': 'Längs rutten',
'roadtrip.window.atStop': 'Vid sista platsen',
'roadtrip.window.routeHint': 'Pausa längs rutten när sluttiden nås.',
'roadtrip.window.stopHint': 'Stanna vid sista platsen om nästa inte kan nås före dagens slut.',
'roadtrip.window.legTooLong':
'En körsträcka överskrider dagens tidsram. Lägg till en plats längs vägen eller välj att pausa längs rutten.',
'roadtrip.window.pointLabel': 'Slut på dag {day} kl. {time}',
'roadtrip.window.title': 'Dagliga restider',
'roadtrip.window.start': 'Dagens start',
'roadtrip.window.end': 'Dagens slut',
'roadtrip.window.hint':
'Ange båda tiderna för att planera dagliga pauser. Töm ett fält för att stänga av. Manuella tider har företräde. Dagarna kopplas ihop automatiskt.',
'roadtrip.window.invalid': 'Sluttiden måste vara senare än starttiden.',
'roadtrip.window.stop': 'Dagens slut',
'roadtrip.window.resume': 'Fortsätt resan',
'roadtrip.window.pointHint': 'Här beräknas resan göra uppehåll över natten.',
'roadtrip.window.departure': 'Fortsätt efter resten av besöket klockan {time}',
'roadtrip.window.showPoint': 'Visa på kartan',
'roadtrip.window.incomplete': 'Alla anslutande rutter behövs för att beräkna dagliga pauser.',
'roadtrip.window.conflict':
'En fast tid krockar med körningen och pauserna. Manuella tider behålls; automatisk planering är pausad.',
'roadtrip.window.tooLong': 'Dessa tider kräver fler än 365 extra dagar. Välj ett längre dagligt tidsintervall.',
'roadtrip.mode.roadtrip': 'Bilresa',
'roadtrip.mode.days': 'Dagar',
'roadtrip.mode.label': 'Planvy',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Egen ruttmotor',
'settings.routingBaseHint': 'En egen OSRM-instans. Tomt använder de publika servrarna, som tillåter ungefär en förfrågan per sekund – nog för en dag, knappt för en bilresa. Träder i kraft efter omstart av servern.',
'settings.valhallaBase': 'Egen Valhalla-instans',
'settings.valhallaBaseHint': 'En egen Valhalla-instans. Den frågas när en etapp ska undvika vägavgifter, motorvägar eller färjor — de publika OSRM-servrarna kan inte svara på det. Tomt använder FOSSGIS publika Valhalla, om inte en egen ruttmotor angetts ovan; då frågas ingen andra motor alls. Börjar gälla efter en omstart av servern.',
'settings.valhallaBaseHint':
'TREK använder som standard FOSSGIS publika Valhalla för att undvika vägtullar, motorvägar och färjor. Ange URL:en till din egen Valhalla här för att använda den i stället. Om bara en egen ruttserver är konfigurerad används inte den publika Valhalla. Starta om servern och ladda om sidan efter att du angett en egen URL.',
'settings.mapHint': 'URL-mall för kartrutor',
'settings.mapProvider': 'Kartleverantör',
'settings.mapProviderHint': 'Påverkar resplaneraren och resedagbokens kartor. Atlas använder alltid Leaflet.',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Çevrimiçiyken gün sonunu rota boyunca veya bir yere sürükleyin; otomatik sonu geri yüklemek için sağ tıklayın.",
'roadtrip.window.resetBoundaries': "Otomatik gün sonlarını geri yükle",
'roadtrip.window.endHere': 'Günü burada bitir',
'roadtrip.window.endHereHint':
'Roadtrip modu ve günlük seyahat saatleri etkinken yer ayrıntılarından belirli bir durağı gün sonu olarak seçebilirsiniz.',
'roadtrip.window.endAt': 'Günü bitir',
'roadtrip.window.onRoute': 'Rota üzerinde',
'roadtrip.window.atStop': 'Son yerde',
'roadtrip.window.routeHint': 'Bitiş saatine ulaşıldığında rota üzerinde mola ver.',
'roadtrip.window.stopHint': 'Bir sonraki yere gün bitmeden ulaşılamıyorsa son yerde kal.',
'roadtrip.window.legTooLong':
'Bir sürüş günlük zaman aralığını aşıyor. Yol üzerine bir yer ekleyin veya rota üzerinde mola vermeyi seçin.',
'roadtrip.window.pointLabel': '{day}. günün bitişi saat {time}',
'roadtrip.window.title': 'Günlük yolculuk saatleri',
'roadtrip.window.start': 'Gün başlangıcı',
'roadtrip.window.end': 'Gün bitişi',
'roadtrip.window.hint':
'Günlük molaları planlamak için iki saati de ayarlayın. Kapatmak için birini temizleyin. Elle girilen saatler önceliklidir. Günler otomatik bağlanır.',
'roadtrip.window.invalid': 'Bitiş saati başlangıç saatinden sonra olmalıdır.',
'roadtrip.window.stop': 'Gün sonu',
'roadtrip.window.resume': 'Yolculuğa devam et',
'roadtrip.window.pointHint': 'Burası yolculuğunuzun tahmini gece molası noktasıdır.',
'roadtrip.window.departure': 'Ziyaretin kalan kısmından sonra {time} saatinde devam et',
'roadtrip.window.showPoint': 'Haritada göster',
'roadtrip.window.incomplete': 'Günlük molaları hesaplamak için tüm bağlantı rotaları gereklidir.',
'roadtrip.window.conflict':
'Sabit bir saat sürüş ve molalarla çakışıyor. Elle girilen saatler korunur; otomatik planlama duraklatıldı.',
'roadtrip.window.tooLong': 'Bu saatler 365 günden fazla ek süre gerektiriyor. Daha uzun bir günlük aralık seçin.',
'roadtrip.mode.roadtrip': 'Yol gezisi',
'roadtrip.mode.days': 'Günler',
'roadtrip.mode.label': 'Plan görünümü',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Kendi rota motoru',
'settings.routingBaseHint': 'Kendi OSRM sunucunuz. Boş bırakılırsa saniyede yaklaşık bir istek veren genel sunucular kullanılır: bir gün için yeter, uzun yolculuk için az. Sunucu yeniden başlatıldığında etkin olur.',
'settings.valhallaBase': 'Kendi Valhalla sunucunuz',
'settings.valhallaBaseHint': 'Kendi Valhalla sunucunuz. Bir etabın gişeleri, otoyolları veya feribotları es geçmesi gerektiğinde ona sorulur — açık OSRM sunucuları bunu yanıtlayamaz. Boş bırakılırsa FOSSGIS’in açık Valhalla’sı kullanılır; yukarıda kendi rota motorunuz yazılıysa ikinci bir motor hiç sorulmaz. Sunucu yeniden başlatıldıktan sonra geçerli olur.',
'settings.valhallaBaseHint':
'TREK, ücretli yolları, otoyolları ve feribotları önlemek için varsayılan olarak FOSSGIS’in herkese açık Valhalla hizmetini kullanır. Bunun yerine kendi Valhalla sunucunuzu kullanmak için URL’sini buraya girin. Yalnızca özel bir rota sunucusu yapılandırılmışsa herkese açık Valhalla kullanılmaz. Özel URL girdikten sonra sunucuyu yeniden başlatın ve sayfayı yenileyin.',
'settings.mapHint': 'Harita kutucukları için URL şablonu',
'settings.mapProvider': 'Harita Sağlayıcısı',
'settings.mapProviderHint': 'Seyahat planlayıcı ve Journey haritalarını etkiler. Atlas her zaman Leaflet kullanır.',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Онлайн перетягніть кінець дня вздовж маршруту або на місце; клацніть правою кнопкою, щоб відновити автоматичне завершення.",
'roadtrip.window.resetBoundaries': "Відновити автоматичні завершення днів",
'roadtrip.window.endHere': 'Завершити день тут',
'roadtrip.window.endHereHint':
'У деталях місця можна завершити день на вибраній зупинці, коли активні режим Roadtrip і щоденний час подорожі.',
'roadtrip.window.endAt': 'Завершення дня',
'roadtrip.window.onRoute': 'На маршруті',
'roadtrip.window.atStop': 'В останньому місці',
'roadtrip.window.routeHint': 'Зупинитися на маршруті, коли настане час завершення дня.',
'roadtrip.window.stopHint': 'Залишитися в останньому місці, якщо до наступного не можна дістатися до кінця дня.',
'roadtrip.window.legTooLong':
'Один переїзд перевищує денний інтервал. Додайте місце дорогою або виберіть зупинку на маршруті.',
'roadtrip.window.pointLabel': 'Кінець дня {day} о {time}',
'roadtrip.window.title': 'Щоденний час подорожі',
'roadtrip.window.start': 'Початок дня',
'roadtrip.window.end': 'Кінець дня',
'roadtrip.window.hint':
'Задайте обидва часи для щоденних перерв. Очистіть одне поле, щоб вимкнути розрахунок. Ручні значення мають пріоритет. Дні з’єднуються автоматично.',
'roadtrip.window.invalid': 'Кінець дня має бути пізніше початку.',
'roadtrip.window.stop': 'Кінець дня',
'roadtrip.window.resume': 'Продовжити подорож',
'roadtrip.window.pointHint': 'Тут передбачається нічна зупинка в дорозі.',
'roadtrip.window.departure': 'Продовжити після решти відвідування о {time}',
'roadtrip.window.showPoint': 'Показати на мапі',
'roadtrip.window.incomplete': 'Для розрахунку щоденних перерв потрібні всі сполучні маршрути.',
'roadtrip.window.conflict':
'Фіксований час суперечить поїздці та перервам. Ручні значення збережено; автоматичне планування призупинено.',
'roadtrip.window.tooLong': 'За цих налаштувань потрібно понад 365 додаткових днів. Збільште щоденний інтервал.',
'roadtrip.mode.roadtrip': 'Автоподорож',
'roadtrip.mode.days': 'Дні',
'roadtrip.mode.label': 'Вигляд плану',
+2 -1
View File
@@ -28,7 +28,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Власний сервер маршрутів',
'settings.routingBaseHint': 'Власний примірник OSRM. Порожньо — використовуються публічні сервери з обмеженням близько одного запиту на секунду: на день вистачає, для автоподорожі мало. Діє після перезапуску сервера.',
'settings.valhallaBase': 'Власний сервер Valhalla',
'settings.valhallaBaseHint': 'Власний сервер Valhalla. До нього звертаються, коли ділянка має обійти платні дороги, автомагістралі або пороми — публічні сервери OSRM на це відповісти не можуть. Порожнє використовує публічний Valhalla від FOSSGIS, якщо вище не вказано власний маршрутизатор; тоді другий рушій не запитують узагалі. Діє після перезапуску сервера.',
'settings.valhallaBaseHint':
'За замовчуванням TREK використовує публічну Valhalla FOSSGIS для уникнення платних доріг, автомагістралей і поромів. Введіть тут URL власної Valhalla, щоб використовувати її замість публічної. Якщо налаштовано лише власний сервер маршрутизації, публічна Valhalla не використовується. Після введення власного URL перезапустіть сервер і оновіть сторінку.',
'settings.mapHint': 'URL-шаблон для тайлів карти',
'settings.mapProvider': 'Провайдер карти',
'settings.mapProviderHint': 'Застосовується до Trip Planner та Journey. Atlas завжди використовує Leaflet.',
+28
View File
@@ -1,6 +1,34 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "Khi trực tuyến, kéo điểm kết thúc ngày dọc tuyến đường hoặc đến một địa điểm; nhấp chuột phải để khôi phục kết thúc tự động.",
'roadtrip.window.resetBoundaries': "Khôi phục kết thúc ngày tự động",
'roadtrip.window.endHere': 'Kết thúc ngày tại đây',
'roadtrip.window.endHereHint':
'Bạn có thể kết thúc ngày tại một điểm dừng trong chi tiết địa điểm khi chế độ Roadtrip và giờ di chuyển hằng ngày đang bật.',
'roadtrip.window.endAt': 'Kết thúc ngày',
'roadtrip.window.onRoute': 'Trên tuyến đường',
'roadtrip.window.atStop': 'Tại địa điểm cuối',
'roadtrip.window.routeHint': 'Tạm dừng trên tuyến đường khi đến giờ kết thúc.',
'roadtrip.window.stopHint': 'Ở lại địa điểm cuối nếu không thể đến địa điểm tiếp theo trước giờ kết thúc ngày.',
'roadtrip.window.legTooLong':
'Một chặng lái xe vượt quá khung giờ hằng ngày. Thêm địa điểm dọc đường hoặc chọn tạm dừng trên tuyến đường.',
'roadtrip.window.pointLabel': 'Kết thúc ngày {day} lúc {time}',
'roadtrip.window.title': 'Giờ di chuyển hằng ngày',
'roadtrip.window.start': 'Giờ bắt đầu ngày',
'roadtrip.window.end': 'Giờ kết thúc ngày',
'roadtrip.window.hint':
'Đặt cả hai giờ để lên kế hoạch nghỉ mỗi ngày. Xóa một giờ để tắt. Giờ nhập thủ công được ưu tiên. Các ngày được nối tự động.',
'roadtrip.window.invalid': 'Giờ kết thúc phải sau giờ bắt đầu.',
'roadtrip.window.stop': 'Kết thúc ngày',
'roadtrip.window.resume': 'Tiếp tục hành trình',
'roadtrip.window.pointHint': 'Đây là điểm tạm dừng qua đêm dự kiến của hành trình.',
'roadtrip.window.departure': 'Tiếp tục sau phần tham quan còn lại lúc {time}',
'roadtrip.window.showPoint': 'Hiện trên bản đồ',
'roadtrip.window.incomplete': 'Cần có tất cả tuyến đường nối để tính thời gian nghỉ hằng ngày.',
'roadtrip.window.conflict':
'Một giờ cố định xung đột với việc lái xe và nghỉ. Giờ thủ công được giữ nguyên; lập lịch tự động tạm dừng.',
'roadtrip.window.tooLong': 'Các giờ này cần hơn 365 ngày bổ sung. Hãy chọn khoảng thời gian mỗi ngày dài hơn.',
'roadtrip.mode.roadtrip': 'Chuyến đi đường bộ',
'roadtrip.mode.days': 'Ngày',
'roadtrip.mode.label': 'Chế độ xem kế hoạch',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': 'Máy chủ định tuyến riêng',
'settings.routingBaseHint': 'Máy chủ OSRM của riêng bạn. Để trống sẽ dùng máy chủ công cộng, cho phép khoảng một yêu cầu mỗi giây — đủ cho một ngày, chật cho chuyến đi dài. Có hiệu lực sau khi khởi động lại máy chủ.',
'settings.valhallaBase': 'Máy chủ Valhalla riêng',
'settings.valhallaBaseHint': 'Máy chủ Valhalla riêng. Nó được hỏi khi một chặng cần tránh trạm thu phí, đường cao tốc hoặc phà — các máy chủ OSRM công cộng không trả lời được việc đó. Để trống sẽ dùng Valhalla công cộng của FOSSGIS, trừ khi ở trên đã ghi một máy chủ định tuyến riêng; khi đó không hỏi máy chủ thứ hai nào cả. Có hiệu lực sau khi khởi động lại máy chủ.',
'settings.valhallaBaseHint':
'Theo mặc định, TREK dùng Valhalla công cộng của FOSSGIS để tránh đường thu phí, đường cao tốc và phà. Nhập URL Valhalla riêng tại đây để dùng thay thế. Nếu chỉ cấu hình máy chủ định tuyến riêng, Valhalla công cộng sẽ không được dùng. Sau khi nhập URL riêng, hãy khởi động lại máy chủ và tải lại trang.',
'settings.mapHint': 'Mẫu URL cho ô bản đồ',
'settings.mapProvider': 'Nhà cung cấp bản đồ',
'settings.mapProviderHint':
+24
View File
@@ -1,6 +1,30 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "連線時可沿路線拖動當天終點或將其拖到某個地點,按右鍵可恢復自動終點。",
'roadtrip.window.resetBoundaries': "恢復自動每日終點",
'roadtrip.window.endHere': '在此結束當天行程',
'roadtrip.window.endHereHint': '啟用 Roadtrip 模式和每日出行時間後,可在地點詳情中將指定停留點設為當天行程終點。',
'roadtrip.window.endAt': '一天的結束地點',
'roadtrip.window.onRoute': '路線途中',
'roadtrip.window.atStop': '最後一個地點',
'roadtrip.window.routeHint': '到達結束時間時,在路線上暫停。',
'roadtrip.window.stopHint': '若無法在當天結束前抵達下一個地點,就停留在最後一個地點。',
'roadtrip.window.legTooLong': '某段車程超出每日時間範圍。請在途中新增地點,或選擇在路線途中暫停。',
'roadtrip.window.pointLabel': '第 {day} 天於 {time} 結束',
'roadtrip.window.title': '每日出行時間',
'roadtrip.window.start': '一天開始時間',
'roadtrip.window.end': '一天結束時間',
'roadtrip.window.hint': '設定兩個時間以規劃每日休息。清空任一項即可關閉。手動時間優先,各天路線會自動連接。',
'roadtrip.window.invalid': '結束時間必須晚於開始時間。',
'roadtrip.window.stop': '當天行程結束',
'roadtrip.window.resume': '繼續行程',
'roadtrip.window.pointHint': '這裡是預計的夜間暫停地點。',
'roadtrip.window.departure': '完成剩餘停留後於 {time} 繼續',
'roadtrip.window.showPoint': '在地圖上顯示',
'roadtrip.window.incomplete': '所有連接路線可用後才能計算每日休息。',
'roadtrip.window.conflict': '固定時間與行車和休息安排衝突。手動時間保持不變,自動規劃已暫停。',
'roadtrip.window.tooLong': '這些時間需要超過365個額外天數。請延長每日出行時段。',
'roadtrip.mode.roadtrip': '公路旅行',
'roadtrip.mode.days': '依日',
'roadtrip.mode.label': '計畫檢視',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': '自建路徑規劃服務',
'settings.routingBaseHint': '你自己的 OSRM 實例。留空則使用公共伺服器,約每秒一個請求 — 單日夠用,長途自駕則吃緊。需重新啟動伺服器後生效。',
'settings.valhallaBase': '自建 Valhalla 執行個體',
'settings.valhallaBaseHint': '自建的 Valhalla 執行個體。當某段路程需要避開收費站、高速公路或渡輪時會向它詢問,公開的 OSRM 伺服器無法回答這類問題。留空則使用 FOSSGIS 的公開 Valhalla;若上方已填寫自建路徑規劃服務,則完全不詢問第二個引擎。重新啟動伺服器後生效。',
'settings.valhallaBaseHint':
'TREK 預設使用 FOSSGIS 的公共 Valhalla 來避開收費道路、高速公路和渡輪。若要改用自己的 Valhalla,請在此輸入網址。如果只設定了自己的路線規劃伺服器,就不會使用公共 Valhalla。輸入自己的網址後,請重新啟動伺服器並重新載入頁面。',
'settings.mapHint': '地圖瓦片 URL 模板',
'settings.mapProvider': '地圖提供商',
'settings.mapProviderHint': '影響行程規劃和旅程地圖。Atlas 始終使用 Leaflet。',
+24
View File
@@ -1,6 +1,30 @@
import type { TranslationStrings } from '../types';
const roadtrip: TranslationStrings = {
'roadtrip.window.dragHint': "在线时可沿路线拖动当天终点或将其拖到某个地点,右键点击可恢复自动终点。",
'roadtrip.window.resetBoundaries': "恢复自动每日终点",
'roadtrip.window.endHere': '在此结束当天行程',
'roadtrip.window.endHereHint': '启用 Roadtrip 模式和每日出行时间后,可在地点详情中将指定停留点设为当天行程终点。',
'roadtrip.window.endAt': '一天的结束地点',
'roadtrip.window.onRoute': '路线途中',
'roadtrip.window.atStop': '最后一个地点',
'roadtrip.window.routeHint': '到达结束时间时,在路线上暂停。',
'roadtrip.window.stopHint': '若无法在当天结束前抵达下一个地点,就停留在最后一个地点。',
'roadtrip.window.legTooLong': '某段车程超出每日时间范围。请在途中添加地点,或选择在路线途中暂停。',
'roadtrip.window.pointLabel': '第 {day} 天于 {time} 结束',
'roadtrip.window.title': '每日出行时间',
'roadtrip.window.start': '一天开始时间',
'roadtrip.window.end': '一天结束时间',
'roadtrip.window.hint': '设置两个时间以规划每日休息。清空任一项即可关闭。手动时间优先,各天路线会自动连接。',
'roadtrip.window.invalid': '结束时间必须晚于开始时间。',
'roadtrip.window.stop': '当天行程结束',
'roadtrip.window.resume': '继续行程',
'roadtrip.window.pointHint': '这里是预计的夜间暂停地点。',
'roadtrip.window.departure': '完成剩余停留后于 {time} 继续',
'roadtrip.window.showPoint': '在地图上显示',
'roadtrip.window.incomplete': '所有连接路线可用后才能计算每日休息。',
'roadtrip.window.conflict': '固定时间与行车和休息安排冲突。手动时间保持不变,自动规划已暂停。',
'roadtrip.window.tooLong': '这些时间需要超过365个额外天数。请延长每日出行时段。',
'roadtrip.mode.roadtrip': '公路旅行',
'roadtrip.mode.days': '按天',
'roadtrip.mode.label': '计划视图',
+2 -1
View File
@@ -27,7 +27,8 @@ const settings: TranslationStrings = {
'settings.routingBase': '自建路径规划服务',
'settings.routingBaseHint': '你自己的 OSRM 实例。留空则使用公共服务器,约每秒一个请求 — 单日够用,长途自驾则吃紧。需重启服务器后生效。',
'settings.valhallaBase': '自建 Valhalla 实例',
'settings.valhallaBaseHint': '自建的 Valhalla 实例。当某段路程需要避开收费站、高速公路或轮渡时会向它询问,公共 OSRM 服务器无法回答这类问题。留空则使用 FOSSGIS 的公共 Valhalla;若上方已填写自建路径规划服务,则完全不询问第二个引擎。重启服务器后生效。',
'settings.valhallaBaseHint':
'TREK 默认使用 FOSSGIS 的公共 Valhalla 来避开收费道路、高速公路和渡轮。若要改用自己的 Valhalla,请在此输入网址。如果只配置了自己的路线规划服务器,就不会使用公共 Valhalla。输入自己的网址后,请重启服务器并重新加载页面。',
'settings.mapHint': '地图瓦片 URL 模板',
'settings.mapProvider': '地图提供商',
'settings.mapProviderHint': '影响行程规划器和旅程地图。足迹始终使用 Leaflet。',
+1
View File
@@ -62,6 +62,7 @@ export * from './admin/admin.schema';
// Realtime WS event contract registry (event names + payload schemas)
export * from './realtime/events.schema';
export * from './roadtrip/day-boundary.schema';
// Sanitisation helpers — used by the client today, scoped here so the server
// has them ready if rich-text input ever ships.
+4 -3
View File
@@ -30,6 +30,7 @@ const FIXTURES: Record<TrekWsEventName, Record<string, unknown>> = {
'day:reordered': { orderedIds: [2, 1] },
'roadtripVia:changed': { dayId: 2, vias: [{ id: 9, lat: 53.5, lng: 9.9 }] },
'roadtripTrack:changed': { dayId: 2, track: null },
'roadtripBoundary:changed': { boundaries: [{ day_number: 1, from_assignment_id: 9, to_assignment_id: null, fraction: 1 }] },
'dayNote:created': { dayId: 2, note: { id: 5 } },
'dayNote:updated': { dayId: 2, note: { id: 5 } },
'dayNote:deleted': { noteId: 5, dayId: 2 },
@@ -140,12 +141,12 @@ const DRIFT_VARIANTS: Partial<Record<TrekWsEventName, Record<string, unknown>[]>
};
describe('@trek/shared realtime event registry', () => {
it('WSEVT-REG-001: pins the authoritative inventory counts (71 trip + 32 user = 103)', () => {
it('WSEVT-REG-001: pins the authoritative inventory counts (72 trip + 32 user = 104)', () => {
// 67th to 69th trip event: the three collab:link:* a shared link emits.
// 70th and 71st: the road trip's vias and tracks, which used to be written silently.
expect(TREK_WS_TRIP_EVENT_NAMES).toHaveLength(71);
expect(TREK_WS_TRIP_EVENT_NAMES).toHaveLength(72);
expect(TREK_WS_USER_EVENT_NAMES).toHaveLength(32);
expect(TREK_WS_EVENT_NAMES).toHaveLength(103);
expect(TREK_WS_EVENT_NAMES).toHaveLength(104);
});
it('WSEVT-REG-002: every name is domain:action shaped and outside the reserved plugin: namespace', () => {
+2
View File
@@ -1,4 +1,5 @@
import { z } from 'zod';
import { roadtripDayBoundaryListSchema } from '../roadtrip/day-boundary.schema';
/**
* WS event contract registry — the single source of truth for every realtime
@@ -110,6 +111,7 @@ export const TREK_WS_EVENTS = {
scope: 'trip',
payload: z.object({ dayId: id, track: entity.nullable() }),
},
'roadtripBoundary:changed': { scope: 'trip', payload: roadtripDayBoundaryListSchema },
// ── Day notes ────────────────────────────────────────────────────────────
'dayNote:created': { scope: 'trip', payload: z.object({ dayId: id, note: entity }) },
@@ -0,0 +1,13 @@
import { z } from 'zod';
export const roadtripDayBoundarySchema = z.object({
day_number: z.number().int().min(1).max(366),
from_assignment_id: z.number().int().positive(),
to_assignment_id: z.number().int().positive().nullable(),
fraction: z.number().min(0).max(1),
}).refine(b => b.to_assignment_id !== b.from_assignment_id, 'A boundary needs two different stops');
export const roadtripDayBoundaryListSchema = z.object({
boundaries: z.array(roadtripDayBoundarySchema),
});
export type RoadtripDayBoundary = z.infer<typeof roadtripDayBoundarySchema>;