diff --git a/client/src/components/Roadtrip/RoadtripCorridorPanel.tsx b/client/src/components/Roadtrip/RoadtripCorridorPanel.tsx index 3e8ed056c..255cc7c9c 100644 --- a/client/src/components/Roadtrip/RoadtripCorridorPanel.tsx +++ b/client/src/components/Roadtrip/RoadtripCorridorPanel.tsx @@ -7,7 +7,6 @@ import { useTranslation } from '../../i18n/TranslationContext' import { useSettingsStore } from '../../store/settingsStore' import { formatDistance } from '../../utils/units' import CustomSelect from '../shared/CustomSelect' -import { formatDurationShort } from './roadtripModel' import { CORRIDOR_CATEGORY_KEYS, CORRIDOR_WIDTHS_KM, type RoadtripCorridor } from './useRoadtripCorridor' import type { CorridorPoi } from './useCorridorPois' import type { RoadtripRoutes } from './useRoadtripRoutes' @@ -119,18 +118,8 @@ export default function RoadtripCorridorPanel({ corridor, routes, onAddPoi }: Ro return (
{/* Header — the rhythm of the places sidebar this replaces. */} -
+

{t('roadtrip.poi.title')}

-

{t('roadtrip.poi.hint')}

- {corridor.day ? ( - // Under the title rather than beside it: the rail is narrow enough that a - // second element on the heading line pushes the heading into two. -

- {formatDistance(corridor.day.distance / 1000, distanceUnit)} - · - {formatDurationShort(corridor.day.duration)} -

- ) : null}
{/* Search controls */} diff --git a/client/src/components/Roadtrip/useCorridorPois.ts b/client/src/components/Roadtrip/useCorridorPois.ts index 16b60a7bd..51e96ed4f 100644 --- a/client/src/components/Roadtrip/useCorridorPois.ts +++ b/client/src/components/Roadtrip/useCorridorPois.ts @@ -1,7 +1,7 @@ import { useCallback, useEffect, useRef, useState } from 'react' import { mapsApi } from '../../api/client' import { useTranslation } from '../../i18n' -import { corridorTiles, projectOntoRoute, simplifyLine, type LatLng } from './corridor' +import { corridorTiles, projectOntoRoute, simplifyLine, type Bbox, type LatLng } from './corridor' import type { Poi } from '../Map/poiCategories' /** A POI that is actually on the way, with the two numbers that make it one. */ @@ -27,9 +27,11 @@ export interface CorridorSearch { * would otherwise be dozens of requests against a shared public mirror; past this the * search stops and says so rather than quietly covering half the route. */ -const MAX_TILES = 10 -/** Gap between Overpass requests — the public mirrors are a shared resource. */ -const REQUEST_SPACING_MS = 700 +const MAX_TILES = 16 +/** Gap after a request before the same worker starts the next — the mirrors are shared. */ +const REQUEST_SPACING_MS = 400 +/** How many boxes are in flight at once. */ +const CONCURRENT_REQUESTS = 3 const sleep = (ms: number, signal: AbortSignal): Promise => new Promise(resolve => { @@ -93,13 +95,23 @@ export function useCorridorPois(line: LatLng[], categories: string[], widthKm: n setLoading(true) setProgress({ done: 0, total: tiles.length * categories.length }) + const jobs: { tile: Bbox; category: string }[] = [] + for (const tile of tiles) for (const category of categories) jobs.push({ tile, category }) + void (async () => { const seen = new Map() let failures = 0 let done = 0 - for (const tile of tiles) { - for (const category of categories) { + let next = 0 + + // A few at a time, staggered. Following the real road rather than the line between + // stops means more boxes to cover the same drive, and asking for them strictly one + // after another turned a search into half a minute of waiting. The server races + // several Overpass mirrors and caches what comes back, so a small pool is fair use. + const worker = async (): Promise => { + while (next < jobs.length) { if (controller.signal.aborted || runId !== runIdRef.current) return + const { tile, category } = jobs[next++] try { const data = await mapsApi.pois(category, tile, locale, controller.signal) for (const poi of data.pois) { @@ -109,19 +121,21 @@ export function useCorridorPois(line: LatLng[], categories: string[], widthKm: n seen.set(poi.osm_id, { ...poi, offRouteKm: hit.offRouteKm, alongKm: hit.alongKm }) } } catch { - // One dead mirror or one clamped box must not empty the whole search; the - // run is only called a failure if every request failed. + // One dead mirror or one clamped box must not empty the whole search; the run + // is only called a failure if every request failed. failures++ } done++ if (controller.signal.aborted || runId !== runIdRef.current) return - setProgress({ done, total: tiles.length * categories.length }) + setProgress({ done, total: jobs.length }) setResults([...seen.values()].sort((a, b) => a.alongKm - b.alongKm)) await sleep(REQUEST_SPACING_MS, controller.signal) } } + + await Promise.all(Array.from({ length: Math.min(CONCURRENT_REQUESTS, jobs.length) }, worker)) if (controller.signal.aborted || runId !== runIdRef.current) return - setError(failures === tiles.length * categories.length && failures > 0) + setError(failures === jobs.length && failures > 0) setLoading(false) })() }, [line, categories, widthKm, locale]) diff --git a/client/src/components/Roadtrip/useRoadtripCorridor.ts b/client/src/components/Roadtrip/useRoadtripCorridor.ts index 7c3debb70..082427533 100644 --- a/client/src/components/Roadtrip/useRoadtripCorridor.ts +++ b/client/src/components/Roadtrip/useRoadtripCorridor.ts @@ -37,12 +37,15 @@ export function useRoadtripCorridor(routes: RoadtripRoutes): RoadtripCorridor { // has picked anything — and follows along when that day disappears. const day = routes.days.find(d => String(d.dayId) === dayId) ?? routes.days[0] - const line = useMemo( - // The stops are spine enough: the corridor is kilometres wide, and the routed - // geometry per leg is not kept once its numbers have been read. - () => (day ? day.stops.map(s => ({ lat: s.lat, lng: s.lng })) : []), - [day], - ) + const line = useMemo(() => { + if (!day) return [] + // The roads driven, not the straight lines between stops. A corridor built from the + // stops searches beside a line the car never takes — between two cities that is open + // country, which is why everything it found sat at the stops themselves. + if (day.geometry.length > 1) return day.geometry.map(([lat, lng]) => ({ lat, lng })) + // Until the day has routed there is nothing else to go on. + return day.stops.map(s => ({ lat: s.lat, lng: s.lng })) + }, [day]) const search = useCorridorPois(line, categories, widthKm) diff --git a/client/src/components/Roadtrip/useRoadtripRoutes.ts b/client/src/components/Roadtrip/useRoadtripRoutes.ts index 9a5924b53..410ee4aa6 100644 --- a/client/src/components/Roadtrip/useRoadtripRoutes.ts +++ b/client/src/components/Roadtrip/useRoadtripRoutes.ts @@ -31,6 +31,13 @@ export interface RoadtripDay { legs: (RouteSegment | undefined)[] /** Arrival and departure per stop, walked forward from the day's first pinned time. */ schedule: Schedule + /** + * The roads actually driven that day, as [lat, lng] — not the straight lines between + * stops. Anything asking "what is along this day" has to use this: between Hamburg and + * Berlin the straight line runs across open country while the motorway swings north of + * it, so a corridor built from the stops finds the wrong side of the map. + */ + geometry: [number, number][] distance: number duration: number } @@ -136,6 +143,7 @@ export function useRoadtripRoutes( stops, legs: [], schedule: { entries: [], warnings: [] }, + geometry: [], distance: 0, duration: 0, } @@ -244,6 +252,9 @@ export function useRoadtripRoutes( if (leg.line.length > 1) lines.push(leg.line) segments.push(leg.seg) } + // The run polylines end to end: leg 0 of a run carries its whole geometry, the + // rest carry none, so concatenating what is there gives the day as driven. + const geometry = routed.flatMap(l => l?.line ?? []) const legs = routed.map(l => l?.seg) const distance = legs.reduce((sum, l) => sum + (l?.distance ?? 0), 0) const duration = legs.reduce((sum, l) => sum + (l?.duration ?? 0), 0) @@ -251,7 +262,7 @@ export function useRoadtripRoutes( day.stops.map(s => ({ anchor: s.time, dwellMinutes: s.dwellMinutes })), legs.map(l => l?.duration), ) - return { ...day, legs, schedule, distance, duration } + return { ...day, legs, schedule, geometry, distance, duration } }) return { days: out, diff --git a/shared/src/i18n/ar/roadtrip.ts b/shared/src/i18n/ar/roadtrip.ts index 809b0c9df..0727553f1 100644 --- a/shared/src/i18n/ar/roadtrip.ts +++ b/shared/src/i18n/ar/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'محطات على الطريق', 'roadtrip.stops.remove': 'إزالة المحطة', 'roadtrip.poi.title': 'على طول المسار', - 'roadtrip.poi.hint': 'ابحث على طول مسار اليوم عمّا تحتاجه في الطريق.', 'roadtrip.poi.scope': 'اليوم', 'roadtrip.poi.looking': 'المطلوب', 'roadtrip.poi.searchingHint': 'جارٍ البحث على طول المسار…', diff --git a/shared/src/i18n/br/roadtrip.ts b/shared/src/i18n/br/roadtrip.ts index cc70bb216..0eed8f675 100644 --- a/shared/src/i18n/br/roadtrip.ts +++ b/shared/src/i18n/br/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Paradas pelo caminho', 'roadtrip.stops.remove': 'Remover parada', 'roadtrip.poi.title': 'Ao longo da rota', - 'roadtrip.poi.hint': 'Pesquise ao longo do trajeto de um dia o que precisa no caminho.', 'roadtrip.poi.scope': 'Dia', 'roadtrip.poi.looking': 'Procurando por', 'roadtrip.poi.searchingHint': 'Pesquisando a rota…', diff --git a/shared/src/i18n/ca/roadtrip.ts b/shared/src/i18n/ca/roadtrip.ts index 68dd741eb..ee2f12015 100644 --- a/shared/src/i18n/ca/roadtrip.ts +++ b/shared/src/i18n/ca/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Parades pel camí', 'roadtrip.stops.remove': 'Elimina la parada', 'roadtrip.poi.title': 'Al llarg de la ruta', - 'roadtrip.poi.hint': 'Cerca al llarg del trajecte d’un dia el que necessitis.', 'roadtrip.poi.scope': 'Dia', 'roadtrip.poi.looking': 'Es busca', 'roadtrip.poi.searchingHint': 'S’està cercant la ruta…', diff --git a/shared/src/i18n/cs/roadtrip.ts b/shared/src/i18n/cs/roadtrip.ts index e9d0220c9..0bef1442c 100644 --- a/shared/src/i18n/cs/roadtrip.ts +++ b/shared/src/i18n/cs/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Zastávky po cestě', 'roadtrip.stops.remove': 'Odebrat zastávku', 'roadtrip.poi.title': 'Podél trasy', - 'roadtrip.poi.hint': 'Prohledejte denní jízdu podle toho, co po cestě potřebujete.', 'roadtrip.poi.scope': 'Den', 'roadtrip.poi.looking': 'Hledá se', 'roadtrip.poi.searchingHint': 'Prohledávám trasu…', diff --git a/shared/src/i18n/de/roadtrip.ts b/shared/src/i18n/de/roadtrip.ts index 406c410f6..0cfdf5c38 100644 --- a/shared/src/i18n/de/roadtrip.ts +++ b/shared/src/i18n/de/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Stopps unterwegs', 'roadtrip.stops.remove': 'Stopp entfernen', 'roadtrip.poi.title': 'Entlang der Route', - 'roadtrip.poi.hint': 'Durchsuche die Fahrt eines Tages nach dem, was du unterwegs brauchst.', 'roadtrip.poi.scope': 'Tag', 'roadtrip.poi.looking': 'Gesucht wird', 'roadtrip.poi.searchingHint': 'Die Route wird durchsucht…', diff --git a/shared/src/i18n/en/roadtrip.ts b/shared/src/i18n/en/roadtrip.ts index 06fd3d964..78ed29112 100644 --- a/shared/src/i18n/en/roadtrip.ts +++ b/shared/src/i18n/en/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Stops along the way', 'roadtrip.stops.remove': 'Remove stop', 'roadtrip.poi.title': 'Along the route', - 'roadtrip.poi.hint': 'Search a day’s drive for what you need along it.', 'roadtrip.poi.scope': 'Day', 'roadtrip.poi.looking': 'Looking for', 'roadtrip.poi.searchingHint': 'Searching the route…', diff --git a/shared/src/i18n/es/roadtrip.ts b/shared/src/i18n/es/roadtrip.ts index ba8a9a948..201971ec5 100644 --- a/shared/src/i18n/es/roadtrip.ts +++ b/shared/src/i18n/es/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Paradas por el camino', 'roadtrip.stops.remove': 'Eliminar parada', 'roadtrip.poi.title': 'A lo largo de la ruta', - 'roadtrip.poi.hint': 'Busca a lo largo del trayecto de un día lo que necesites.', 'roadtrip.poi.scope': 'Día', 'roadtrip.poi.looking': 'Se busca', 'roadtrip.poi.searchingHint': 'Buscando por la ruta…', diff --git a/shared/src/i18n/fr/roadtrip.ts b/shared/src/i18n/fr/roadtrip.ts index 91d2e861c..8f1f80f2d 100644 --- a/shared/src/i18n/fr/roadtrip.ts +++ b/shared/src/i18n/fr/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Étapes en chemin', 'roadtrip.stops.remove': 'Supprimer l’étape', 'roadtrip.poi.title': 'Le long de l’itinéraire', - 'roadtrip.poi.hint': 'Cherchez le long du trajet d’une journée ce dont vous avez besoin.', 'roadtrip.poi.scope': 'Jour', 'roadtrip.poi.looking': 'Recherche de', 'roadtrip.poi.searchingHint': 'Recherche le long de l’itinéraire…', diff --git a/shared/src/i18n/gr/roadtrip.ts b/shared/src/i18n/gr/roadtrip.ts index c87eb7c1a..5151dfedb 100644 --- a/shared/src/i18n/gr/roadtrip.ts +++ b/shared/src/i18n/gr/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Στάσεις στη διαδρομή', 'roadtrip.stops.remove': 'Αφαίρεση στάσης', 'roadtrip.poi.title': 'Κατά μήκος της διαδρομής', - 'roadtrip.poi.hint': 'Αναζητήστε κατά μήκος της διαδρομής μιας ημέρας ό,τι χρειάζεστε.', 'roadtrip.poi.scope': 'Ημέρα', 'roadtrip.poi.looking': 'Αναζητείται', 'roadtrip.poi.searchingHint': 'Αναζήτηση κατά μήκος της διαδρομής…', diff --git a/shared/src/i18n/hu/roadtrip.ts b/shared/src/i18n/hu/roadtrip.ts index 9dd2d5555..ce636f310 100644 --- a/shared/src/i18n/hu/roadtrip.ts +++ b/shared/src/i18n/hu/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Megállók útközben', 'roadtrip.stops.remove': 'Megálló eltávolítása', 'roadtrip.poi.title': 'Az útvonal mentén', - 'roadtrip.poi.hint': 'Keresd meg egy nap útvonalán, amire útközben szükséged van.', 'roadtrip.poi.scope': 'Nap', 'roadtrip.poi.looking': 'Amit keresel', 'roadtrip.poi.searchingHint': 'Az útvonal keresése…', diff --git a/shared/src/i18n/id/roadtrip.ts b/shared/src/i18n/id/roadtrip.ts index 48a1f9792..4c38c9271 100644 --- a/shared/src/i18n/id/roadtrip.ts +++ b/shared/src/i18n/id/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Perhentian di sepanjang jalan', 'roadtrip.stops.remove': 'Hapus perhentian', 'roadtrip.poi.title': 'Sepanjang rute', - 'roadtrip.poi.hint': 'Cari di sepanjang perjalanan satu hari apa yang Anda butuhkan.', 'roadtrip.poi.scope': 'Hari', 'roadtrip.poi.looking': 'Mencari', 'roadtrip.poi.searchingHint': 'Mencari di sepanjang rute…', diff --git a/shared/src/i18n/it/roadtrip.ts b/shared/src/i18n/it/roadtrip.ts index fa71d952c..90c6fe88b 100644 --- a/shared/src/i18n/it/roadtrip.ts +++ b/shared/src/i18n/it/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Soste lungo il tragitto', 'roadtrip.stops.remove': 'Rimuovi sosta', 'roadtrip.poi.title': 'Lungo il percorso', - 'roadtrip.poi.hint': 'Cerca lungo il tragitto di una giornata ciò che ti serve.', 'roadtrip.poi.scope': 'Giorno', 'roadtrip.poi.looking': 'Sto cercando', 'roadtrip.poi.searchingHint': 'Ricerca lungo il percorso…', diff --git a/shared/src/i18n/ja/roadtrip.ts b/shared/src/i18n/ja/roadtrip.ts index 2f8038df1..024e4bf74 100644 --- a/shared/src/i18n/ja/roadtrip.ts +++ b/shared/src/i18n/ja/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': '途中の立ち寄り先', 'roadtrip.stops.remove': '立ち寄り先を削除', 'roadtrip.poi.title': 'ルート沿い', - 'roadtrip.poi.hint': 'その日のドライブ沿いに必要なものを探します。', 'roadtrip.poi.scope': '日', 'roadtrip.poi.looking': '探すもの', 'roadtrip.poi.searchingHint': 'ルートを検索しています…', diff --git a/shared/src/i18n/ko/roadtrip.ts b/shared/src/i18n/ko/roadtrip.ts index 1cc5fe61f..a204992b3 100644 --- a/shared/src/i18n/ko/roadtrip.ts +++ b/shared/src/i18n/ko/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': '가는 길의 경유지', 'roadtrip.stops.remove': '경유지 삭제', 'roadtrip.poi.title': '경로 주변', - 'roadtrip.poi.hint': '하루 주행 경로를 따라 필요한 것을 찾습니다.', 'roadtrip.poi.scope': '날짜', 'roadtrip.poi.looking': '찾는 항목', 'roadtrip.poi.searchingHint': '경로를 검색하는 중…', diff --git a/shared/src/i18n/nl/roadtrip.ts b/shared/src/i18n/nl/roadtrip.ts index f298d5be8..abdf4adfb 100644 --- a/shared/src/i18n/nl/roadtrip.ts +++ b/shared/src/i18n/nl/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Stops onderweg', 'roadtrip.stops.remove': 'Stop verwijderen', 'roadtrip.poi.title': 'Langs de route', - 'roadtrip.poi.hint': 'Doorzoek de rit van een dag op wat je onderweg nodig hebt.', 'roadtrip.poi.scope': 'Dag', 'roadtrip.poi.looking': 'Gezocht wordt', 'roadtrip.poi.searchingHint': 'De route wordt doorzocht…', diff --git a/shared/src/i18n/pl/roadtrip.ts b/shared/src/i18n/pl/roadtrip.ts index abc886531..8496ef677 100644 --- a/shared/src/i18n/pl/roadtrip.ts +++ b/shared/src/i18n/pl/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Przystanki po drodze', 'roadtrip.stops.remove': 'Usuń przystanek', 'roadtrip.poi.title': 'Wzdłuż trasy', - 'roadtrip.poi.hint': 'Przeszukaj przejazd danego dnia pod kątem tego, czego potrzebujesz.', 'roadtrip.poi.scope': 'Dzień', 'roadtrip.poi.looking': 'Szukam', 'roadtrip.poi.searchingHint': 'Przeszukiwanie trasy…', diff --git a/shared/src/i18n/ru/roadtrip.ts b/shared/src/i18n/ru/roadtrip.ts index 5ae312afe..7d008c70d 100644 --- a/shared/src/i18n/ru/roadtrip.ts +++ b/shared/src/i18n/ru/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Остановки в пути', 'roadtrip.stops.remove': 'Удалить остановку', 'roadtrip.poi.title': 'Вдоль маршрута', - 'roadtrip.poi.hint': 'Ищите вдоль дневного перегона то, что нужно в пути.', 'roadtrip.poi.scope': 'День', 'roadtrip.poi.looking': 'Ищем', 'roadtrip.poi.searchingHint': 'Идёт поиск вдоль маршрута…', diff --git a/shared/src/i18n/sv/roadtrip.ts b/shared/src/i18n/sv/roadtrip.ts index e3e49939b..f3d2f75ee 100644 --- a/shared/src/i18n/sv/roadtrip.ts +++ b/shared/src/i18n/sv/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Stopp längs vägen', 'roadtrip.stops.remove': 'Ta bort stopp', 'roadtrip.poi.title': 'Längs rutten', - 'roadtrip.poi.hint': 'Sök längs en dags körning efter det du behöver på vägen.', 'roadtrip.poi.scope': 'Dag', 'roadtrip.poi.looking': 'Söker efter', 'roadtrip.poi.searchingHint': 'Söker längs rutten…', diff --git a/shared/src/i18n/tr/roadtrip.ts b/shared/src/i18n/tr/roadtrip.ts index 2fcb4aa50..8dc6e363b 100644 --- a/shared/src/i18n/tr/roadtrip.ts +++ b/shared/src/i18n/tr/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Yol üzerindeki duraklar', 'roadtrip.stops.remove': 'Durağı kaldır', 'roadtrip.poi.title': 'Rota boyunca', - 'roadtrip.poi.hint': 'Bir günün sürüşü boyunca yolda ihtiyacın olanı ara.', 'roadtrip.poi.scope': 'Gün', 'roadtrip.poi.looking': 'Aranan', 'roadtrip.poi.searchingHint': 'Rota aranıyor…', diff --git a/shared/src/i18n/uk/roadtrip.ts b/shared/src/i18n/uk/roadtrip.ts index 23918c9f5..15da7e361 100644 --- a/shared/src/i18n/uk/roadtrip.ts +++ b/shared/src/i18n/uk/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Зупинки в дорозі', 'roadtrip.stops.remove': 'Видалити зупинку', 'roadtrip.poi.title': 'Уздовж маршруту', - 'roadtrip.poi.hint': 'Шукайте вздовж денного перегону те, що потрібно в дорозі.', 'roadtrip.poi.scope': 'День', 'roadtrip.poi.looking': 'Шукаємо', 'roadtrip.poi.searchingHint': 'Триває пошук уздовж маршруту…', diff --git a/shared/src/i18n/vi/roadtrip.ts b/shared/src/i18n/vi/roadtrip.ts index 7ea51ccd3..ec69d5397 100644 --- a/shared/src/i18n/vi/roadtrip.ts +++ b/shared/src/i18n/vi/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': 'Điểm dừng dọc đường', 'roadtrip.stops.remove': 'Xóa điểm dừng', 'roadtrip.poi.title': 'Dọc theo lộ trình', - 'roadtrip.poi.hint': 'Tìm dọc chặng đường trong ngày những thứ bạn cần.', 'roadtrip.poi.scope': 'Ngày', 'roadtrip.poi.looking': 'Đang tìm', 'roadtrip.poi.searchingHint': 'Đang tìm dọc lộ trình…', diff --git a/shared/src/i18n/zh-TW/roadtrip.ts b/shared/src/i18n/zh-TW/roadtrip.ts index 6c56b5dee..5d98b1626 100644 --- a/shared/src/i18n/zh-TW/roadtrip.ts +++ b/shared/src/i18n/zh-TW/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': '沿途停靠點', 'roadtrip.stops.remove': '移除停靠點', 'roadtrip.poi.title': '沿線', - 'roadtrip.poi.hint': '沿某一天的行程搜尋路上需要的東西。', 'roadtrip.poi.scope': '日期', 'roadtrip.poi.looking': '尋找', 'roadtrip.poi.searchingHint': '正在沿路線搜尋…', diff --git a/shared/src/i18n/zh/roadtrip.ts b/shared/src/i18n/zh/roadtrip.ts index 4b8b110bb..0d1ef0afd 100644 --- a/shared/src/i18n/zh/roadtrip.ts +++ b/shared/src/i18n/zh/roadtrip.ts @@ -11,7 +11,6 @@ const roadtrip: TranslationStrings = { 'roadtrip.stops.label': '沿途停靠点', 'roadtrip.stops.remove': '移除停靠点', 'roadtrip.poi.title': '沿线', - 'roadtrip.poi.hint': '沿某一天的行程搜索路上需要的东西。', 'roadtrip.poi.scope': '日期', 'roadtrip.poi.looking': '查找', 'roadtrip.poi.searchingHint': '正在沿路线搜索…',