feat(roadtrip): bring the road trip addon to the phone

A road trip tab on the mobile trip screen: the stage as a chain, the same
map underneath it, the sheets a passenger needs, and a search along the
route.

The addon was desktop only because road trip MODE is a data switch rather
than a view switch. It rewrites `assignments` and `places` for the whole
planner hook, and every mobile sheet is permanently mounted and reads those
same two lists, so turning it on there brought back documented regressions.
The mode flag is therefore untouched. A second flag, `roadtripFeedActive`,
feeds only the routing round and does it off the STORED assignments, so the
phone gets the drive without what the mode drags along with it.

The map is one instance shared by the plan tab and the road trip tab,
hoisted into a single JSX expression so React keeps it in the same position
and the WebGL context is never torn down on a tab switch.

The corridor search is scoped to what a phone can afford: a window of the
day rather than all of it, a smaller tile ceiling, a capped retry pass and a
deadline. The standard search is three requests where the desk makes
fifteen. The categories are deliberately not narrowed, because they all ride
one query per box, so a second one costs nothing.

Two gaps found while wiring it up are closed here as well. The fuel search
drew its offers nowhere on the phone, so the button did nothing visible;
they are in the dry band now, with the detour, the spare range and an accept
button. And the map credit opened as a two line ribbon across a screen the
map fills: both GL engines now start it collapsed, and Leaflet, which has no
collapsed mode of its own, is given one.
This commit is contained in:
Maurice
2026-09-16 21:55:18 +02:00
parent bd44197974
commit aaff8f9db4
96 changed files with 7544 additions and 97 deletions
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'عرض الرحلة كاملة',
'map.overview.hide': 'إخفاء الرحلة كاملة',
'map.overview.total': 'المسافة الإجمالية',
'map.attribution': 'مصادر الخريطة',
};
export default map;
+17
View File
@@ -47,5 +47,22 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'التالي',
'mobileTrip.viewDetails': 'عرض التفاصيل',
'mobileTrip.transportsEmpty': 'لا يوجد نقل بعد',
'mobileTrip.rtInfoTitle': 'أرقام القيادة',
'mobileTrip.rtDesktopNote':
'تُضبط هذه الأرقام على سطح المكتب، حيث يمكنك أيضًا مقارنة المسارات البديلة، وجعل يوم يتبع مسارًا مستوردًا.',
'mobileTrip.rtPlanOnDesktop': 'يتم التخطيط على سطح المكتب. يحسب TREK القيادة بمجرد أن يضم اليوم مكانين.',
'mobileTrip.rtSearchOffline': 'يلزم اتصال بالإنترنت: يقرأ البحث المسار الذي أمامك.',
'mobileTrip.rtBehind': '{time} تأخرًا عن الخطة',
'mobileTrip.rtStayScope': 'مدة التوقف تخص المكان نفسه، لذا تُحتسب في كل يوم تكون فيه هذه المحطة ضمن الخطة.',
'mobileTrip.rtStayLess': '{count} دقيقة أقل',
'mobileTrip.rtStayMore': '{count} دقيقة أكثر',
'mobileTrip.rtNightDesktopOnly': 'إضافة مبيت في هذا المكان تتم في مخطط سطح المكتب. هنا يمكنك إزالته فقط.',
'mobileTrip.rtReach': 'إلى أي مدى',
'mobileTrip.rtReachAhead': '{distance} أمامك',
'mobileTrip.rtFromNext': 'من محطتك التالية',
'mobileTrip.rtFromStart': 'من بداية المرحلة',
'mobileTrip.rtNoneAhead': 'لا شيء على الطريق أمامك. جرّب المرحلة كاملة.',
'mobileTrip.rtNoneOnStage': 'لا شيء من هذا النوع على طول هذه المرحلة.',
'mobileTrip.rtTruncated': '{count} مقاطع فيها أكثر مما يتسع في إجابة واحدة. اختر أنواعًا أقل لرؤية الباقي.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Mostrar a viagem inteira',
'map.overview.hide': 'Ocultar a viagem inteira',
'map.overview.total': 'Distância total',
'map.attribution': 'Créditos do mapa',
};
export default map;
+21
View File
@@ -47,5 +47,26 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'A seguir',
'mobileTrip.viewDetails': 'Ver detalhes',
'mobileTrip.transportsEmpty': 'Nenhum transporte ainda',
'mobileTrip.rtInfoTitle': 'Dados de condução',
'mobileTrip.rtDesktopNote':
'Esses dados são definidos no computador, onde você também pode comparar rotas alternativas e fazer um dia seguir uma trilha importada.',
'mobileTrip.rtPlanOnDesktop':
'O planejamento acontece no computador. O TREK calcula o trajeto assim que um dia tem dois locais.',
'mobileTrip.rtSearchOffline': 'Precisa de conexão: a busca lê a rota à frente.',
'mobileTrip.rtBehind': '{time} de atraso em relação ao plano',
'mobileTrip.rtStayScope':
'A estadia pertence ao local, então ela vale em todos os dias em que esta parada está planejada.',
'mobileTrip.rtStayLess': '{count} minutos a menos',
'mobileTrip.rtStayMore': '{count} minutos a mais',
'mobileTrip.rtNightDesktopOnly':
'Reservar um pernoite neste local funciona no planejador do computador. Aqui você só pode descartá-lo.',
'mobileTrip.rtReach': 'Até onde',
'mobileTrip.rtReachAhead': '{distance} à frente',
'mobileTrip.rtFromNext': 'A partir da sua próxima parada',
'mobileTrip.rtFromStart': 'A partir do início da etapa',
'mobileTrip.rtNoneAhead': 'Nada na estrada à frente. Tente a etapa inteira.',
'mobileTrip.rtNoneOnStage': 'Nada desse tipo ao longo desta etapa.',
'mobileTrip.rtTruncated':
'{count} trechos tinham mais do que cabe em uma resposta. Escolha menos tipos para ver o resto.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Mostra tot el viatge',
'map.overview.hide': 'Amaga tot el viatge',
'map.overview.total': 'Distància total',
'map.attribution': 'Crèdits del mapa',
};
export default map;
+21
View File
@@ -47,6 +47,27 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'A continuació',
'mobileTrip.viewDetails': 'Mostra els detalls',
'mobileTrip.transportsEmpty': 'Encara no hi ha transport',
'mobileTrip.rtInfoTitle': 'Dades de conducció',
'mobileTrip.rtDesktopNote':
'Aquestes dades es configuren a l’escriptori, on també pots comparar rutes alternatives i fer que un dia segueixi una traça importada.',
'mobileTrip.rtPlanOnDesktop':
'La planificació es fa a l’escriptori. TREK calcula el trajecte quan un dia té dos llocs.',
'mobileTrip.rtSearchOffline': 'Cal connexió: la cerca llegeix la ruta que tens per endavant.',
'mobileTrip.rtBehind': '{time} de retard sobre el pla',
'mobileTrip.rtStayScope':
'L’estada pertany al lloc, així que compta tots els dies en què aquesta parada està planificada.',
'mobileTrip.rtStayLess': '{count} minuts menys',
'mobileTrip.rtStayMore': '{count} minuts més',
'mobileTrip.rtNightDesktopOnly':
'Reservar una pernoctació en aquest lloc es fa al planificador d’escriptori. Aquí només la pots descartar.',
'mobileTrip.rtReach': 'Fins on',
'mobileTrip.rtReachAhead': '{distance} per endavant',
'mobileTrip.rtFromNext': 'Des de la teva propera parada',
'mobileTrip.rtFromStart': 'Des de l’inici de l’etapa',
'mobileTrip.rtNoneAhead': 'No hi ha res a la carretera que tens al davant. Prova tota l’etapa.',
'mobileTrip.rtNoneOnStage': 'No hi ha res d’aquest tipus al llarg d’aquesta etapa.',
'mobileTrip.rtTruncated':
'{count} trams tenien més del que cap en una resposta. Tria menys tipus per veure la resta.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Zobrazit celou cestu',
'map.overview.hide': 'Skrýt celou cestu',
'map.overview.total': 'Celková vzdálenost',
'map.attribution': 'Zdroje mapy',
};
export default map;
+20
View File
@@ -47,5 +47,25 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Další na řadě',
'mobileTrip.viewDetails': 'Zobrazit podrobnosti',
'mobileTrip.transportsEmpty': 'Zatím žádná doprava',
'mobileTrip.rtInfoTitle': 'Údaje o jízdě',
'mobileTrip.rtDesktopNote':
'Tyto údaje se nastavují na počítači, kde také můžete porovnávat jiné trasy a nechat den sledovat importovanou stopu.',
'mobileTrip.rtPlanOnDesktop': 'Plánování probíhá na počítači. Jakmile má den dvě místa, TREK jízdu spočítá.',
'mobileTrip.rtSearchOffline': 'Vyžaduje připojení: hledání čte trasu před vámi.',
'mobileTrip.rtBehind': 'o {time} za plánem',
'mobileTrip.rtStayScope':
'Doba zastávky patří k místu, takže platí pro každý den, na který je tato zastávka naplánovaná.',
'mobileTrip.rtStayLess': 'o {count} minut méně',
'mobileTrip.rtStayMore': 'o {count} minut více',
'mobileTrip.rtNightDesktopOnly':
'Nocleh na tomto místě se zadává v plánovači na počítači. Tady jej můžete jen zrušit.',
'mobileTrip.rtReach': 'Jak daleko',
'mobileTrip.rtReachAhead': '{distance} před vámi',
'mobileTrip.rtFromNext': 'Od vaší příští zastávky',
'mobileTrip.rtFromStart': 'Od začátku etapy',
'mobileTrip.rtNoneAhead': 'Na cestě před vámi nic není. Zkuste celou etapu.',
'mobileTrip.rtNoneOnStage': 'Nic takového podél této etapy není.',
'mobileTrip.rtTruncated':
'{count} úseků mělo víc, než se vejde do jedné odpovědi. Vyberte méně druhů, ať uvidíte zbytek.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Ganze Reise anzeigen',
'map.overview.hide': 'Ganze Reise ausblenden',
'map.overview.total': 'Gesamtstrecke',
'map.attribution': 'Kartenquellen',
};
export default map;
+20
View File
@@ -47,5 +47,25 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Als Nächstes',
'mobileTrip.viewDetails': 'Details anzeigen',
'mobileTrip.transportsEmpty': 'Noch keine Transporte',
'mobileTrip.rtInfoTitle': 'Fahrdaten',
'mobileTrip.rtDesktopNote':
'Diese Werte werden am Desktop gesetzt. Dort kannst du auch Routenvarianten vergleichen und einen Tag einer importierten Spur folgen lassen.',
'mobileTrip.rtPlanOnDesktop': 'Geplant wird am Desktop. TREK berechnet die Fahrt, sobald ein Tag zwei Orte hat.',
'mobileTrip.rtSearchOffline': 'Braucht eine Verbindung: Die Suche liest die Strecke, die vor dir liegt.',
'mobileTrip.rtBehind': '{time} hinter dem Plan',
'mobileTrip.rtStayScope':
'Der Aufenthalt gehört zum Ort und zählt deshalb an jedem Tag, an dem dieser Stopp geplant ist.',
'mobileTrip.rtStayLess': '{count} Minuten weniger',
'mobileTrip.rtStayMore': '{count} Minuten mehr',
'mobileTrip.rtNightDesktopOnly':
'Eine Übernachtung an diesem Ort legst du im Desktop-Planer an. Hier kannst du sie nur verwerfen.',
'mobileTrip.rtReach': 'Wie weit',
'mobileTrip.rtReachAhead': '{distance} voraus',
'mobileTrip.rtFromNext': 'Ab deinem nächsten Stopp',
'mobileTrip.rtFromStart': 'Ab dem Anfang der Etappe',
'mobileTrip.rtNoneAhead': 'Auf der Strecke voraus ist nichts. Versuch die ganze Etappe.',
'mobileTrip.rtNoneOnStage': 'Auf dieser Etappe gibt es davon nichts.',
'mobileTrip.rtTruncated':
'{count} Abschnitte hatten mehr, als in eine Antwort passt. Wähl weniger Arten, um den Rest zu sehen.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Show whole trip',
'map.overview.hide': 'Hide whole trip',
'map.overview.total': 'Total distance',
'map.attribution': 'Map credits',
};
export default map;
+19
View File
@@ -47,5 +47,24 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Up Next',
'mobileTrip.viewDetails': 'View details',
'mobileTrip.transportsEmpty': 'No transport yet',
'mobileTrip.rtInfoTitle': 'Driving figures',
'mobileTrip.rtDesktopNote':
'These figures are set on the desktop, where you can also compare route alternatives and make a day follow an imported track.',
'mobileTrip.rtPlanOnDesktop': 'Planning happens on the desktop. TREK works out the drive once a day has two places.',
'mobileTrip.rtSearchOffline': 'Needs a connection: the search reads the route ahead.',
'mobileTrip.rtBehind': '{time} behind plan',
'mobileTrip.rtStayScope': 'The stay belongs to the place, so it counts on every day this stop is planned.',
'mobileTrip.rtStayLess': '{count} minutes less',
'mobileTrip.rtStayMore': '{count} minutes more',
'mobileTrip.rtNightDesktopOnly':
'Booking a night at this place works in the desktop planner. Here you can only discard it.',
'mobileTrip.rtReach': 'How far',
'mobileTrip.rtReachAhead': '{distance} ahead',
'mobileTrip.rtFromNext': 'From your next stop',
'mobileTrip.rtFromStart': 'From the start of the stage',
'mobileTrip.rtNoneAhead': 'Nothing on the road ahead. Try the whole stage.',
'mobileTrip.rtNoneOnStage': 'Nothing of that kind along this stage.',
'mobileTrip.rtTruncated':
'{count} stretches had more than fits in one answer. Pick fewer kinds to see the rest.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Mostrar todo el viaje',
'map.overview.hide': 'Ocultar todo el viaje',
'map.overview.total': 'Distancia total',
'map.attribution': 'Créditos del mapa',
};
export default map;
+21
View File
@@ -47,5 +47,26 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'A continuación',
'mobileTrip.viewDetails': 'Ver detalles',
'mobileTrip.transportsEmpty': 'Aún no hay transporte',
'mobileTrip.rtInfoTitle': 'Cifras del trayecto',
'mobileTrip.rtDesktopNote':
'Estas cifras se ajustan en el escritorio, donde también puedes comparar rutas alternativas y hacer que un día siga una traza importada.',
'mobileTrip.rtPlanOnDesktop':
'La planificación se hace en el escritorio. TREK calcula el trayecto en cuanto un día tiene dos lugares.',
'mobileTrip.rtSearchOffline': 'Hace falta conexión: la búsqueda lee la ruta que queda por delante.',
'mobileTrip.rtBehind': '{time} de retraso sobre lo previsto',
'mobileTrip.rtStayScope':
'La duración de la parada pertenece al lugar, así que cuenta en cada día en el que esta parada está prevista.',
'mobileTrip.rtStayLess': '{count} minutos menos',
'mobileTrip.rtStayMore': '{count} minutos más',
'mobileTrip.rtNightDesktopOnly':
'Reservar una pernoctación en este lugar se hace en el planificador de escritorio. Aquí solo puedes descartarla.',
'mobileTrip.rtReach': 'Hasta dónde',
'mobileTrip.rtReachAhead': '{distance} por delante',
'mobileTrip.rtFromNext': 'Desde tu próxima parada',
'mobileTrip.rtFromStart': 'Desde el inicio de la etapa',
'mobileTrip.rtNoneAhead': 'No hay nada en la carretera que tienes por delante. Prueba con toda la etapa.',
'mobileTrip.rtNoneOnStage': 'No hay nada de eso a lo largo de esta etapa.',
'mobileTrip.rtTruncated':
'{count} tramos tenían más de lo que cabe en una respuesta. Elige menos tipos para ver el resto.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Afficher tout le voyage',
'map.overview.hide': 'Masquer tout le voyage',
'map.overview.total': 'Distance totale',
'map.attribution': 'Crédits de la carte',
};
export default map;
+21
View File
@@ -47,5 +47,26 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'À suivre',
'mobileTrip.viewDetails': 'Voir les détails',
'mobileTrip.transportsEmpty': 'Aucun transport',
'mobileTrip.rtInfoTitle': 'Chiffres du trajet',
'mobileTrip.rtDesktopNote':
'Ces chiffres se règlent sur ordinateur, où vous pouvez aussi comparer d’autres itinéraires et faire suivre à un jour une trace importée.',
'mobileTrip.rtPlanOnDesktop':
'La planification se fait sur ordinateur. TREK calcule le trajet dès qu’un jour compte deux lieux.',
'mobileTrip.rtSearchOffline': 'Connexion nécessaire : la recherche lit l’itinéraire à venir.',
'mobileTrip.rtBehind': '{time} de retard sur le programme',
'mobileTrip.rtStayScope':
'La durée sur place appartient au lieu : elle compte donc pour chaque jour où cet arrêt est prévu.',
'mobileTrip.rtStayLess': '{count} minutes de moins',
'mobileTrip.rtStayMore': '{count} minutes de plus',
'mobileTrip.rtNightDesktopOnly':
'Réserver une nuitée à ce lieu se fait dans le planificateur sur ordinateur. Ici, vous pouvez seulement la supprimer.',
'mobileTrip.rtReach': 'Jusqu’où',
'mobileTrip.rtReachAhead': '{distance} devant',
'mobileTrip.rtFromNext': 'À partir de votre prochain arrêt',
'mobileTrip.rtFromStart': 'Depuis le début de l’étape',
'mobileTrip.rtNoneAhead': 'Rien sur la route devant vous. Essayez toute l’étape.',
'mobileTrip.rtNoneOnStage': 'Rien de ce genre le long de cette étape.',
'mobileTrip.rtTruncated':
'{count} tronçons avaient plus que ce qui tient dans une réponse. Choisissez moins de types pour voir le reste.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Εμφάνιση όλου του ταξιδιού',
'map.overview.hide': 'Απόκρυψη όλου του ταξιδιού',
'map.overview.total': 'Συνολική απόσταση',
'map.attribution': 'Πηγές χάρτη',
};
export default map;
+21
View File
@@ -47,5 +47,26 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Επόμενο',
'mobileTrip.viewDetails': 'Προβολή λεπτομερειών',
'mobileTrip.transportsEmpty': 'Δεν υπάρχει μεταφορά ακόμη',
'mobileTrip.rtInfoTitle': 'Στοιχεία οδήγησης',
'mobileTrip.rtDesktopNote':
'Αυτά τα στοιχεία ορίζονται στον υπολογιστή, όπου μπορείτε επίσης να συγκρίνετε άλλες διαδρομές και να κάνετε μια ημέρα να ακολουθεί ένα εισαγόμενο ίχνος.',
'mobileTrip.rtPlanOnDesktop':
'Ο σχεδιασμός γίνεται στον υπολογιστή. Το TREK υπολογίζει τη διαδρομή μόλις μια ημέρα έχει δύο μέρη.',
'mobileTrip.rtSearchOffline': 'Χρειάζεται σύνδεση: η αναζήτηση διαβάζει τη διαδρομή που ακολουθεί.',
'mobileTrip.rtBehind': '{time} πίσω από το πρόγραμμα',
'mobileTrip.rtStayScope':
'Η διάρκεια της στάσης ανήκει στο μέρος, οπότε μετράει σε κάθε ημέρα που είναι προγραμματισμένη αυτή η στάση.',
'mobileTrip.rtStayLess': '{count} λεπτά λιγότερα',
'mobileTrip.rtStayMore': '{count} λεπτά περισσότερα',
'mobileTrip.rtNightDesktopOnly':
'Η κράτηση διανυκτέρευσης σε αυτό το μέρος γίνεται στον σχεδιαστή του υπολογιστή. Εδώ μπορείτε μόνο να την αφαιρέσετε.',
'mobileTrip.rtReach': 'Πόσο μακριά',
'mobileTrip.rtReachAhead': '{distance} μπροστά',
'mobileTrip.rtFromNext': 'Από την επόμενη στάση σας',
'mobileTrip.rtFromStart': 'Από την αρχή του σκέλους',
'mobileTrip.rtNoneAhead': 'Τίποτα στον δρόμο μπροστά σας. Δοκιμάστε όλο το σκέλος.',
'mobileTrip.rtNoneOnStage': 'Τίποτα τέτοιο κατά μήκος αυτού του σκέλους.',
'mobileTrip.rtTruncated':
'{count} τμήματα είχαν περισσότερα από όσα χωρούν σε μία απάντηση. Διαλέξτε λιγότερα είδη για να δείτε τα υπόλοιπα.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Teljes utazás megjelenítése',
'map.overview.hide': 'Teljes utazás elrejtése',
'map.overview.total': 'Teljes távolság',
'map.attribution': 'Térkép forrásai',
};
export default map;
+21
View File
@@ -47,5 +47,26 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Következő',
'mobileTrip.viewDetails': 'Részletek megtekintése',
'mobileTrip.transportsEmpty': 'Még nincs közlekedés',
'mobileTrip.rtInfoTitle': 'Vezetési adatok',
'mobileTrip.rtDesktopNote':
'Ezeket az adatokat asztali gépen adod meg, ott hasonlíthatod össze az útvonalváltozatokat, és állíthatod be, hogy egy nap importált nyomvonalat kövessen.',
'mobileTrip.rtPlanOnDesktop':
'A tervezés asztali gépen történik. Amint egy napon két hely szerepel, a TREK kiszámolja az útvonalat.',
'mobileTrip.rtSearchOffline': 'Internetkapcsolat kell hozzá: a keresés az előtted lévő útvonalat olvassa be.',
'mobileTrip.rtBehind': '{time} késés a tervhez képest',
'mobileTrip.rtStayScope':
'Az itt töltött idő a helyhez tartozik, ezért minden olyan napon számít, amelyre ez a megálló be van tervezve.',
'mobileTrip.rtStayLess': '{count} perccel kevesebb',
'mobileTrip.rtStayMore': '{count} perccel több',
'mobileTrip.rtNightDesktopOnly':
'Az éjszakázást ezen a helyen az asztali tervezőben lehet megadni. Itt csak elvetni tudod.',
'mobileTrip.rtReach': 'Meddig',
'mobileTrip.rtReachAhead': '{distance} előre',
'mobileTrip.rtFromNext': 'A következő megállódtól',
'mobileTrip.rtFromStart': 'A szakasz elejétől',
'mobileTrip.rtNoneAhead': 'Az előtted lévő úton nincs semmi. Próbáld az egész szakaszt.',
'mobileTrip.rtNoneOnStage': 'Ezen a szakaszon nincs ilyesmi.',
'mobileTrip.rtTruncated':
'{count} szakaszon több volt, mint ami egy válaszba fér. Válassz kevesebb fajtát, hogy lásd a többit.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Tampilkan seluruh perjalanan',
'map.overview.hide': 'Sembunyikan seluruh perjalanan',
'map.overview.total': 'Jarak total',
'map.attribution': 'Kredit peta',
};
export default map;
+21
View File
@@ -47,5 +47,26 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Berikutnya',
'mobileTrip.viewDetails': 'Lihat detail',
'mobileTrip.transportsEmpty': 'Belum ada transportasi',
'mobileTrip.rtInfoTitle': 'Data berkendara',
'mobileTrip.rtDesktopNote':
'Data ini diatur di desktop, di sana kamu juga bisa membandingkan rute alternatif dan membuat satu hari mengikuti jalur yang diimpor.',
'mobileTrip.rtPlanOnDesktop':
'Perencanaan dilakukan di desktop. TREK menghitung perjalanannya begitu satu hari punya dua tempat.',
'mobileTrip.rtSearchOffline': 'Perlu koneksi: pencarian membaca rute di depan.',
'mobileTrip.rtBehind': 'terlambat {time} dari rencana',
'mobileTrip.rtStayScope':
'Lama singgah melekat pada tempatnya, jadi ia terhitung di setiap hari perhentian ini direncanakan.',
'mobileTrip.rtStayLess': '{count} menit lebih singkat',
'mobileTrip.rtStayMore': '{count} menit lebih lama',
'mobileTrip.rtNightDesktopOnly':
'Memesan menginap di tempat ini dilakukan di perencana desktop. Di sini kamu hanya bisa menghapusnya.',
'mobileTrip.rtReach': 'Sejauh apa',
'mobileTrip.rtReachAhead': '{distance} ke depan',
'mobileTrip.rtFromNext': 'Dari perhentian berikutnya',
'mobileTrip.rtFromStart': 'Dari awal etape',
'mobileTrip.rtNoneAhead': 'Tidak ada apa-apa di jalan di depan. Coba seluruh etape.',
'mobileTrip.rtNoneOnStage': 'Tidak ada yang seperti itu di sepanjang etape ini.',
'mobileTrip.rtTruncated':
'{count} ruas punya lebih banyak daripada yang muat dalam satu jawaban. Pilih lebih sedikit jenis untuk melihat sisanya.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Mostra tutto il viaggio',
'map.overview.hide': 'Nascondi tutto il viaggio',
'map.overview.total': 'Distanza totale',
'map.attribution': 'Crediti della mappa',
};
export default map;
+21
View File
@@ -47,5 +47,26 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Prossimo',
'mobileTrip.viewDetails': 'Vedi dettagli',
'mobileTrip.transportsEmpty': 'Ancora nessun trasporto',
'mobileTrip.rtInfoTitle': 'Dati del tragitto',
'mobileTrip.rtDesktopNote':
'Questi dati si impostano da computer, dove puoi anche confrontare percorsi alternativi e far seguire a un giorno una traccia importata.',
'mobileTrip.rtPlanOnDesktop':
'La pianificazione si fa da computer. TREK calcola il tragitto appena un giorno ha due luoghi.',
'mobileTrip.rtSearchOffline': 'Serve una connessione: la ricerca legge il percorso che hai davanti.',
'mobileTrip.rtBehind': '{time} di ritardo sul programma',
'mobileTrip.rtStayScope':
'La durata della sosta appartiene al luogo, quindi vale in ogni giorno in cui questa tappa è prevista.',
'mobileTrip.rtStayLess': '{count} minuti in meno',
'mobileTrip.rtStayMore': '{count} minuti in più',
'mobileTrip.rtNightDesktopOnly':
'Prenotare un pernottamento in questo luogo si fa nel pianificatore da computer. Qui puoi solo scartarlo.',
'mobileTrip.rtReach': 'Fin dove',
'mobileTrip.rtReachAhead': '{distance} davanti',
'mobileTrip.rtFromNext': 'Dalla tua prossima sosta',
'mobileTrip.rtFromStart': 'Dall’inizio della tappa',
'mobileTrip.rtNoneAhead': 'Niente sulla strada davanti a te. Prova con tutta la tappa.',
'mobileTrip.rtNoneOnStage': 'Niente del genere lungo questa tappa.',
'mobileTrip.rtTruncated':
'{count} tratti avevano più di quanto stia in una risposta. Scegli meno tipi per vedere il resto.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': '旅程全体を表示',
'map.overview.hide': '旅程全体を非表示',
'map.overview.total': '合計距離',
'map.attribution': '地図のクレジット',
};
export default map;
+17
View File
@@ -47,5 +47,22 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': '次の予定',
'mobileTrip.viewDetails': '詳細を表示',
'mobileTrip.transportsEmpty': '移動手段はまだありません',
'mobileTrip.rtInfoTitle': '走行データ',
'mobileTrip.rtDesktopNote': 'これらの数値はデスクトップで設定します。デスクトップでは、別のルートを比べたり、読み込んだトラックにその日を沿わせたりもできます。',
'mobileTrip.rtPlanOnDesktop': '計画はデスクトップで行います。1日に場所が2か所そろうと、TREKが走行を計算します。',
'mobileTrip.rtSearchOffline': '接続が必要です:この検索は先のルートを読み取ります。',
'mobileTrip.rtBehind': '予定より {time} 遅れ',
'mobileTrip.rtStayScope': '滞在時間は場所に紐づくため、この立ち寄り先を予定しているすべての日に適用されます。',
'mobileTrip.rtStayLess': '{count} 分減らす',
'mobileTrip.rtStayMore': '{count} 分増やす',
'mobileTrip.rtNightDesktopOnly':
'この場所に宿泊を設定できるのはデスクトップのプランナーです。ここでは取り消すことしかできません。',
'mobileTrip.rtReach': 'どこまで',
'mobileTrip.rtReachAhead': 'この先 {distance}',
'mobileTrip.rtFromNext': '次の立ち寄り先から',
'mobileTrip.rtFromStart': '区間の始まりから',
'mobileTrip.rtNoneAhead': 'この先の道沿いには何もありません。区間全体で試してください。',
'mobileTrip.rtNoneOnStage': 'この区間沿いにはそうした場所はありません。',
'mobileTrip.rtTruncated': '{count} 区間は1回の答えに収まりきりませんでした。種類を減らすと残りも見られます。',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': '전체 여행 보기',
'map.overview.hide': '전체 여행 숨기기',
'map.overview.total': '총 거리',
'map.attribution': '지도 출처',
};
export default map;
+17
View File
@@ -47,5 +47,22 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': '다음 일정',
'mobileTrip.viewDetails': '세부정보 보기',
'mobileTrip.transportsEmpty': '아직 교통편이 없습니다',
'mobileTrip.rtInfoTitle': '주행 수치',
'mobileTrip.rtDesktopNote': '이 수치는 데스크톱에서 설정합니다. 데스크톱에서는 다른 경로를 비교하고, 가져온 트랙을 따라가도록 하루를 맞출 수도 있습니다.',
'mobileTrip.rtPlanOnDesktop': '계획은 데스크톱에서 세웁니다. 하루에 장소가 두 곳 생기면 TREK이 주행을 계산합니다.',
'mobileTrip.rtSearchOffline': '연결이 필요합니다: 이 검색은 앞으로 갈 경로를 읽습니다.',
'mobileTrip.rtBehind': '계획보다 {time} 늦음',
'mobileTrip.rtStayScope': '체류 시간은 장소에 속하므로, 이 경유지가 들어간 모든 날짜에 적용됩니다.',
'mobileTrip.rtStayLess': '{count}분 줄이기',
'mobileTrip.rtStayMore': '{count}분 늘리기',
'mobileTrip.rtNightDesktopOnly':
'이 장소에 숙박을 잡는 것은 데스크톱 플래너에서만 됩니다. 여기에서는 취소만 할 수 있습니다.',
'mobileTrip.rtReach': '어디까지',
'mobileTrip.rtReachAhead': '앞으로 {distance}',
'mobileTrip.rtFromNext': '다음 경유지부터',
'mobileTrip.rtFromStart': '구간 시작부터',
'mobileTrip.rtNoneAhead': '앞쪽 도로에는 아무것도 없습니다. 구간 전체로 찾아보세요.',
'mobileTrip.rtNoneOnStage': '이 구간에는 그런 곳이 없습니다.',
'mobileTrip.rtTruncated': '{count}개 구간은 한 번의 답에 담기지 않았습니다. 종류를 줄이면 나머지도 볼 수 있습니다.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Hele reis tonen',
'map.overview.hide': 'Hele reis verbergen',
'map.overview.total': 'Totale afstand',
'map.attribution': 'Kaartvermeldingen',
};
export default map;
+19
View File
@@ -47,5 +47,24 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Volgende',
'mobileTrip.viewDetails': 'Details bekijken',
'mobileTrip.transportsEmpty': 'Nog geen transport',
'mobileTrip.rtInfoTitle': 'Rijgegevens',
'mobileTrip.rtDesktopNote':
'Deze waarden stel je in op de desktop. Daar kun je ook routevarianten vergelijken en een dag een geïmporteerde track laten volgen.',
'mobileTrip.rtPlanOnDesktop': 'Plannen doe je op de desktop. TREK berekent de rit zodra een dag twee plaatsen heeft.',
'mobileTrip.rtSearchOffline': 'Vereist een verbinding: de zoekopdracht leest de route die voor je ligt.',
'mobileTrip.rtBehind': '{time} achter op schema',
'mobileTrip.rtStayScope': 'Het verblijf hoort bij de plaats en telt dus op elke dag waarop deze stop gepland staat.',
'mobileTrip.rtStayLess': '{count} minuten minder',
'mobileTrip.rtStayMore': '{count} minuten meer',
'mobileTrip.rtNightDesktopOnly':
'Een overnachting op deze plaats voeg je toe in de desktopplanner. Hier kun je die alleen verwijderen.',
'mobileTrip.rtReach': 'Hoe ver',
'mobileTrip.rtReachAhead': '{distance} vooruit',
'mobileTrip.rtFromNext': 'Vanaf je volgende stop',
'mobileTrip.rtFromStart': 'Vanaf het begin van de etappe',
'mobileTrip.rtNoneAhead': 'Niets op de weg die voor je ligt. Probeer de hele etappe.',
'mobileTrip.rtNoneOnStage': 'Niets van dat soort langs deze etappe.',
'mobileTrip.rtTruncated':
'{count} stukken hadden meer dan in één antwoord past. Kies minder soorten om de rest te zien.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Pokaż całą podróż',
'map.overview.hide': 'Ukryj całą podróż',
'map.overview.total': 'Łączny dystans',
'map.attribution': 'Źródła mapy',
};
export default map;
+20
View File
@@ -47,5 +47,25 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Następne',
'mobileTrip.viewDetails': 'Zobacz szczegóły',
'mobileTrip.transportsEmpty': 'Brak transportu',
'mobileTrip.rtInfoTitle': 'Dane jazdy',
'mobileTrip.rtDesktopNote':
'Te dane ustawia się na komputerze, gdzie możesz też porównywać warianty trasy i sprawić, by dzień podążał za zaimportowanym śladem.',
'mobileTrip.rtPlanOnDesktop': 'Planowanie odbywa się na komputerze. TREK wylicza przejazd, gdy dzień ma dwa miejsca.',
'mobileTrip.rtSearchOffline': 'Wymaga połączenia: wyszukiwanie czyta trasę przed tobą.',
'mobileTrip.rtBehind': '{time} opóźnienia względem planu',
'mobileTrip.rtStayScope':
'Pobyt jest przypisany do miejsca, więc liczy się w każdym dniu, w którym zaplanowano ten przystanek.',
'mobileTrip.rtStayLess': '{count} minut mniej',
'mobileTrip.rtStayMore': '{count} minut więcej',
'mobileTrip.rtNightDesktopOnly':
'Nocleg w tym miejscu rezerwuje się w planerze na komputerze. Tutaj możesz go tylko odrzucić.',
'mobileTrip.rtReach': 'Jak daleko',
'mobileTrip.rtReachAhead': '{distance} przed tobą',
'mobileTrip.rtFromNext': 'Od następnego przystanku',
'mobileTrip.rtFromStart': 'Od początku etapu',
'mobileTrip.rtNoneAhead': 'Na drodze przed tobą nic nie ma. Spróbuj całego etapu.',
'mobileTrip.rtNoneOnStage': 'Na tym etapie nie ma nic takiego.',
'mobileTrip.rtTruncated':
'{count} odcinków miało więcej, niż mieści się w jednej odpowiedzi. Wybierz mniej rodzajów, by zobaczyć resztę.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Показать всю поездку',
'map.overview.hide': 'Скрыть всю поездку',
'map.overview.total': 'Общее расстояние',
'map.attribution': 'Источники карты',
};
export default map;
+21
View File
@@ -47,5 +47,26 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Далее',
'mobileTrip.viewDetails': 'Просмотреть детали',
'mobileTrip.transportsEmpty': 'Пока нет транспорта',
'mobileTrip.rtInfoTitle': 'Данные о вождении',
'mobileTrip.rtDesktopNote':
'Эти данные задаются на компьютере: там же можно сравнивать другие маршруты и провести день по импортированному треку.',
'mobileTrip.rtPlanOnDesktop':
'Планирование происходит на компьютере. TREK рассчитает маршрут, как только в дне окажется два места.',
'mobileTrip.rtSearchOffline': 'Нужна сеть: поиск считывает маршрут впереди.',
'mobileTrip.rtBehind': 'на {time} позже плана',
'mobileTrip.rtStayScope':
'Стоянка привязана к месту, поэтому она учитывается в каждый день, на который запланирована эта остановка.',
'mobileTrip.rtStayLess': 'на {count} минут меньше',
'mobileTrip.rtStayMore': 'на {count} минут больше',
'mobileTrip.rtNightDesktopOnly':
'Забронировать ночёвку в этом месте можно в планировщике на компьютере. Здесь её можно только убрать.',
'mobileTrip.rtReach': 'Насколько далеко',
'mobileTrip.rtReachAhead': '{distance} впереди',
'mobileTrip.rtFromNext': 'От следующей остановки',
'mobileTrip.rtFromStart': 'От начала этапа',
'mobileTrip.rtNoneAhead': 'На дороге впереди ничего нет. Попробуйте весь этап.',
'mobileTrip.rtNoneOnStage': 'На этом этапе ничего такого нет.',
'mobileTrip.rtTruncated':
'На {count} участках нашлось больше, чем помещается в один ответ. Выберите меньше видов, чтобы увидеть остальное.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Visa hela resan',
'map.overview.hide': 'Dölj hela resan',
'map.overview.total': 'Total sträcka',
'map.attribution': 'Kartkällor',
};
export default map;
+19
View File
@@ -47,5 +47,24 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Härnäst',
'mobileTrip.viewDetails': 'Visa detaljer',
'mobileTrip.transportsEmpty': 'Ingen transport än',
'mobileTrip.rtInfoTitle': 'Kördata',
'mobileTrip.rtDesktopNote':
'De här värdena ställer du in på datorn. Där kan du också jämföra alternativa vägar och låta en dag följa ett importerat spår.',
'mobileTrip.rtPlanOnDesktop': 'Planeringen sker på datorn. TREK räknar ut körningen så snart en dag har två platser.',
'mobileTrip.rtSearchOffline': 'Kräver anslutning: sökningen läser rutten som ligger framför dig.',
'mobileTrip.rtBehind': '{time} efter planen',
'mobileTrip.rtStayScope': 'Vistelsen hör till platsen och räknas därför varje dag som det här stoppet är inplanerat.',
'mobileTrip.rtStayLess': '{count} minuter mindre',
'mobileTrip.rtStayMore': '{count} minuter mer',
'mobileTrip.rtNightDesktopOnly':
'En övernattning på den här platsen lägger du till i planeraren på datorn. Här kan du bara ta bort den.',
'mobileTrip.rtReach': 'Hur långt',
'mobileTrip.rtReachAhead': '{distance} framåt',
'mobileTrip.rtFromNext': 'Från ditt nästa stopp',
'mobileTrip.rtFromStart': 'Från etappens början',
'mobileTrip.rtNoneAhead': 'Inget på vägen framför dig. Prova hela etappen.',
'mobileTrip.rtNoneOnStage': 'Inget sådant längs den här etappen.',
'mobileTrip.rtTruncated':
'{count} sträckor hade mer än vad som får plats i ett svar. Välj färre sorter för att se resten.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Tüm geziyi göster',
'map.overview.hide': 'Tüm geziyi gizle',
'map.overview.total': 'Toplam mesafe',
'map.attribution': 'Harita kaynakları',
};
export default map;
+19
View File
@@ -47,5 +47,24 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Sırada',
'mobileTrip.viewDetails': 'Ayrıntıları görüntüle',
'mobileTrip.transportsEmpty': 'Henüz ulaşım yok',
'mobileTrip.rtInfoTitle': 'Sürüş değerleri',
'mobileTrip.rtDesktopNote':
'Bu değerler masaüstünde ayarlanır; orada başka yolları karşılaştırabilir ve bir günü içe aktarılmış bir izi takip ettirebilirsiniz.',
'mobileTrip.rtPlanOnDesktop': 'Planlama masaüstünde yapılır. Bir günde iki yer olduğunda TREK sürüşü hesaplar.',
'mobileTrip.rtSearchOffline': 'Bağlantı gerekir: arama, ileride kalan rotayı okur.',
'mobileTrip.rtBehind': 'plandan {time} geride',
'mobileTrip.rtStayScope': 'Bu süre yere aittir, bu yüzden bu durağın planlandığı her gün için geçerlidir.',
'mobileTrip.rtStayLess': '{count} dakika daha az',
'mobileTrip.rtStayMore': '{count} dakika daha fazla',
'mobileTrip.rtNightDesktopOnly':
'Bu yerde konaklama masaüstü planlayıcıda ayarlanır. Burada yalnızca kaldırabilirsiniz.',
'mobileTrip.rtReach': 'Ne kadar uzağa',
'mobileTrip.rtReachAhead': '{distance} ileride',
'mobileTrip.rtFromNext': 'Bir sonraki durağınızdan itibaren',
'mobileTrip.rtFromStart': 'Etabın başından itibaren',
'mobileTrip.rtNoneAhead': 'İleride yol üzerinde bir şey yok. Tüm etabı deneyin.',
'mobileTrip.rtNoneOnStage': 'Bu etap boyunca bu türden bir şey yok.',
'mobileTrip.rtTruncated':
'{count} kesimde tek bir yanıta sığandan fazlası vardı. Geri kalanı görmek için daha az tür seçin.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Показати всю подорож',
'map.overview.hide': 'Сховати всю подорож',
'map.overview.total': 'Загальна відстань',
'map.attribution': 'Джерела карти',
};
export default map;
+21
View File
@@ -47,5 +47,26 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Далі',
'mobileTrip.viewDetails': 'Переглянути деталі',
'mobileTrip.transportsEmpty': 'Поки немає транспорту',
'mobileTrip.rtInfoTitle': 'Дані про водіння',
'mobileTrip.rtDesktopNote':
'Ці дані задаються на комп’ютері: там само можна порівнювати інші маршрути та провести день за імпортованим треком.',
'mobileTrip.rtPlanOnDesktop':
'Планування відбувається на комп’ютері. TREK розрахує маршрут, щойно в дні буде два місця.',
'mobileTrip.rtSearchOffline': 'Потрібне з’єднання: пошук зчитує маршрут попереду.',
'mobileTrip.rtBehind': 'на {time} пізніше плану',
'mobileTrip.rtStayScope':
'Стоянка належить місцю, тому вона враховується в кожен день, на який заплановано цю зупинку.',
'mobileTrip.rtStayLess': 'на {count} хвилин менше',
'mobileTrip.rtStayMore': 'на {count} хвилин більше',
'mobileTrip.rtNightDesktopOnly':
'Забронювати ночівлю в цьому місці можна в планувальнику на комп’ютері. Тут її можна лише прибрати.',
'mobileTrip.rtReach': 'Наскільки далеко',
'mobileTrip.rtReachAhead': '{distance} попереду',
'mobileTrip.rtFromNext': 'Від наступної зупинки',
'mobileTrip.rtFromStart': 'Від початку етапу',
'mobileTrip.rtNoneAhead': 'На дорозі попереду нічого немає. Спробуйте весь етап.',
'mobileTrip.rtNoneOnStage': 'На цьому етапі нічого такого немає.',
'mobileTrip.rtTruncated':
'На {count} ділянках знайшлося більше, ніж уміщується в одну відповідь. Виберіть менше видів, щоб побачити решту.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': 'Hiện toàn bộ chuyến đi',
'map.overview.hide': 'Ẩn toàn bộ chuyến đi',
'map.overview.total': 'Tổng quãng đường',
'map.attribution': 'Nguồn bản đồ',
};
export default map;
+21
View File
@@ -47,5 +47,26 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': 'Tiếp theo',
'mobileTrip.viewDetails': 'Xem chi tiết',
'mobileTrip.transportsEmpty': 'Chưa có phương tiện di chuyển',
'mobileTrip.rtInfoTitle': 'Số liệu lái xe',
'mobileTrip.rtDesktopNote':
'Các số liệu này được đặt trên máy tính, nơi bạn cũng có thể so sánh các lộ trình khác và cho một ngày đi theo tuyến đã nhập.',
'mobileTrip.rtPlanOnDesktop':
'Việc lên kế hoạch diễn ra trên máy tính. TREK tính chặng lái xe ngay khi một ngày có hai địa điểm.',
'mobileTrip.rtSearchOffline': 'Cần có kết nối: việc tìm kiếm đọc lộ trình phía trước.',
'mobileTrip.rtBehind': 'chậm {time} so với kế hoạch',
'mobileTrip.rtStayScope':
'Thời gian dừng thuộc về địa điểm, nên nó được tính vào mọi ngày có điểm dừng này trong kế hoạch.',
'mobileTrip.rtStayLess': 'ít hơn {count} phút',
'mobileTrip.rtStayMore': 'nhiều hơn {count} phút',
'mobileTrip.rtNightDesktopOnly':
'Việc đặt nghỉ đêm tại địa điểm này được thực hiện trong trình lập kế hoạch trên máy tính. Ở đây bạn chỉ có thể bỏ nó đi.',
'mobileTrip.rtReach': 'Xa đến đâu',
'mobileTrip.rtReachAhead': '{distance} phía trước',
'mobileTrip.rtFromNext': 'Từ điểm dừng kế tiếp',
'mobileTrip.rtFromStart': 'Từ đầu chặng',
'mobileTrip.rtNoneAhead': 'Không có gì trên đường phía trước. Thử cả chặng xem sao.',
'mobileTrip.rtNoneOnStage': 'Không có gì thuộc loại đó dọc chặng này.',
'mobileTrip.rtTruncated':
'{count} đoạn có nhiều hơn mức vừa trong một câu trả lời. Chọn ít loại hơn để xem phần còn lại.',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': '顯示整趟行程',
'map.overview.hide': '隱藏整趟行程',
'map.overview.total': '總距離',
'map.attribution': '地圖來源',
};
export default map;
+16
View File
@@ -47,5 +47,21 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': '接下來',
'mobileTrip.viewDetails': '查看詳情',
'mobileTrip.transportsEmpty': '暫無交通安排',
'mobileTrip.rtInfoTitle': '駕駛數據',
'mobileTrip.rtDesktopNote': '這些數據在電腦上設定,在那裡也可以比較其他路線,以及讓某一天沿匯入的軌跡行駛。',
'mobileTrip.rtPlanOnDesktop': '規劃在電腦上進行。當一天有兩個地點時,TREK 就會算出車程。',
'mobileTrip.rtSearchOffline': '需要連線:搜尋會讀取前方的路線。',
'mobileTrip.rtBehind': '比計畫晚 {time}',
'mobileTrip.rtStayScope': '停留時間屬於該地點,因此這個停靠點排在哪一天,就會計入那一天。',
'mobileTrip.rtStayLess': '少 {count} 分鐘',
'mobileTrip.rtStayMore': '多 {count} 分鐘',
'mobileTrip.rtNightDesktopOnly': '在這個地點安排過夜住宿要在電腦版的行程規劃中進行。這裡只能把它移除。',
'mobileTrip.rtReach': '找多遠',
'mobileTrip.rtReachAhead': '前方 {distance}',
'mobileTrip.rtFromNext': '從下一個停靠點起',
'mobileTrip.rtFromStart': '從本段起點起',
'mobileTrip.rtNoneAhead': '前方路上沒有找到。試試整段。',
'mobileTrip.rtNoneOnStage': '本段沿途沒有這類地點。',
'mobileTrip.rtTruncated': '{count} 段路的結果超出一次回答能容納的量。少選幾類就能看到其餘的。',
};
export default mobileTrip;
+1
View File
@@ -25,5 +25,6 @@ const map: TranslationStrings = {
'map.overview.show': '显示整个行程',
'map.overview.hide': '隐藏整个行程',
'map.overview.total': '总距离',
'map.attribution': '地图来源',
};
export default map;
+16
View File
@@ -47,5 +47,21 @@ const mobileTrip: TranslationStrings = {
'mobileTrip.upNext': '接下来',
'mobileTrip.viewDetails': '查看详情',
'mobileTrip.transportsEmpty': '暂无交通安排',
'mobileTrip.rtInfoTitle': '驾驶数据',
'mobileTrip.rtDesktopNote': '这些数据在桌面端设置。在桌面端还可以比较其他路线走法,并让某一天沿导入的轨迹行驶。',
'mobileTrip.rtPlanOnDesktop': '规划在桌面端进行。一天里有了两个地点,TREK 就会算出这段车程。',
'mobileTrip.rtSearchOffline': '需要联网:搜索会读取前方的路线。',
'mobileTrip.rtBehind': '比计划晚 {time}',
'mobileTrip.rtStayScope': '停留时间属于这个地点,因此在安排了该停靠点的每一天都会生效。',
'mobileTrip.rtStayLess': '减少 {count} 分钟',
'mobileTrip.rtStayMore': '增加 {count} 分钟',
'mobileTrip.rtNightDesktopOnly': '在这个地点安排过夜需要在桌面端的规划器中进行,这里只能放弃。',
'mobileTrip.rtReach': '找多远',
'mobileTrip.rtReachAhead': '前方 {distance}',
'mobileTrip.rtFromNext': '从下一个停靠点起',
'mobileTrip.rtFromStart': '从本段起点起',
'mobileTrip.rtNoneAhead': '前方路上没有找到。试试整段。',
'mobileTrip.rtNoneOnStage': '本段沿途没有这类地点。',
'mobileTrip.rtTruncated': '{count} 段路的结果超出一次回答能装下的量。少选几类就能看到其余的。',
};
export default mobileTrip;